如果某个jar的清单Class-Path条目在该位置不存在,但是可以通过其他方式(例如,在应用程序服务器的lib文件夹中)可用,那么会发生什么?
未解决的Class-Path条目会导致任何错误吗?
答案 0 :(得分:1)
JVM加载&按以下顺序搜索课程:
如果JAR类路径指向已包含的JAR文件(例如,扩展名或类路径中前面列出的JAR文件),则不会再次搜索该JAR文件。 (此优化可提高效率并防止循环搜索。)此类JAR文件在类路径中较早出现的位置进行搜索。
为了验证这一点,我也做了以下测试 1.创建包含Util类的lib(jar)“classpath-test”。 2.创建另一个lib(jar),即wrapper-lib,它使用classpath-test的Util类。 3.在wrapper-lib的MANIFEST.MF中,在条目下面添加。
Class-Path: lib/classpath-test.jar
在lib dir下复制classpath-test.jar并在命令
下运行java -jar wrapper-lib.jar
以上命令冉冉。删除lib / classpath-test.jar后执行相同的命令,但失败了。
另一个测试,从lib&删除了classpath-test.jar复制到JAVA_HOME / lib / ext并运行
java -jar wrapper-lib.jar
有效。