java - 类加载器需要解释

标签 java tomcat jar

我有一个包含 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/

相关文章:

java - 有效地找到匹配的对象对

java - Tomcat 7 忽略 cookies?

java - `java -cp` 可以报告它为可执行类中导入的每个包找到的 jar 或类文件吗?

java - elasticsearch - 聚合和过滤器的问题

java - Switch 与 ArrayList Java

java - 这个新的 String[] 和 String.value() 代码是什么意思?

java - 在 servlet 容器启动后立即调用对 localhost 的请求

java - InputStream 无限循环

java - 将命令行参数传递给可运行的 JAR

java - 加载包含在 jar 中的资源