Skip to content
Advertisement

Reasons why a JAR on classpath not loaded

I have a SpringBoot application that is run with the command java -classpath <longlist of JARs> com.example.MyApp.

I have the path to a JAR – in this case liquibase-core-4.4.0.jar – specified on the classpath. However, on startup the app complains about missing class definitions.

Attaching a debugger I can see that the URLClassPath does have this JAR in its path list. However, there is no loader for it.

What would cause a JAR to be on the classpath but have no loader?

Advertisement

Answer

Spring boot applications have pretty clever system of class path searching, for example it finds jars in BOOT-INF/lib – something that a regular java system can’t do. So spring has custom class loaders for this purpose.

Now its possible to add an external jar with the help of LOADER_PATH environment variable or loader.path parameter.

Bottom line, instead of using “standard” java mechanism, consider using “special” spring boot’s mechanisms.

Read the official documentation for concrete examples

User contributions licensed under: CC BY-SA
6 People found this is helpful
Advertisement