未加载类路径上的 JAR 的原因
Reasons why a JAR on classpath not loaded
我有一个 运行 的 SpringBoot 应用程序,其命令为 java -classpath <longlist of JARs> com.example.MyApp
。
我有 JAR 的路径 - 在本例中为 liquibase-core-4.4.0.jar
- 在 class 路径上指定。但是,应用程序在启动时抱怨缺少 class 定义。
附加调试器我可以看到 URLClassPath
在其 path
列表中确实有这个 JAR。但是,没有加载程序。
什么会导致 JAR 在 class路径上但没有加载程序?
Spring 引导应用程序具有非常聪明的 class 路径搜索系统,例如它在 BOOT-INF/lib
中找到 jar - 这是常规 java 系统无法找到的做。因此 spring 为此目的定制了 class 个加载程序。
现在可以借助 LOADER_PATH
环境变量或 loader.path
参数添加外部 jar。
最重要的是,不要使用“标准”java 机制,考虑使用“特殊”spring 引导机制。
我有一个 运行 的 SpringBoot 应用程序,其命令为 java -classpath <longlist of JARs> com.example.MyApp
。
我有 JAR 的路径 - 在本例中为 liquibase-core-4.4.0.jar
- 在 class 路径上指定。但是,应用程序在启动时抱怨缺少 class 定义。
附加调试器我可以看到 URLClassPath
在其 path
列表中确实有这个 JAR。但是,没有加载程序。
什么会导致 JAR 在 class路径上但没有加载程序?
Spring 引导应用程序具有非常聪明的 class 路径搜索系统,例如它在 BOOT-INF/lib
中找到 jar - 这是常规 java 系统无法找到的做。因此 spring 为此目的定制了 class 个加载程序。
现在可以借助 LOADER_PATH
环境变量或 loader.path
参数添加外部 jar。
最重要的是,不要使用“标准”java 机制,考虑使用“特殊”spring 引导机制。