我有一个包含 jar 文件的目录。其中一些类在多个 jar 文件中可用。
List<URL> jarsToLoad = new ArrayList<URL>();
File jarDir = new File("Directory name having jar files");
for ( File jarFile : jarDir.listFiles())
{
jarsToLoad.add( new URL("file", null, jarFile.getPath()) );
}
Thread.currentThread().setContextClassLoader(new URLClassLoader(jarsToLoad.toArray(new URL[jarsToLoad.size()])));
jarDir.listFiles() 在不同的机器上执行上述代码时以不同的顺序列出 jar。假设如果 Test.class 存在于某些机器的 A.jar 和 B.jar 中 Test.class 在某些机器中从 A.jar 加载,它从 B.jar 加载,基于第一个列出的 jar(JAVA API文档说的 listFiles() 方法不能保证任何特定的列表顺序)。
假设 A.jar 和 B.jar 都存在于 tomcat $CATALINA_HOME/lib 目录中,jar tomcat 将从该目录加载 Test.class。
我需要解释 tomcat 如何在这种特定情况下从 jar 文件加载类。
提前致谢。
最佳答案
它的 java 本地调用。
所以我们无法控制它。
所以你在处理之前使用排序。
您可以编写自己的Comparator
来对其进行排序。
关于java - 类加载器需要解释,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27530768/