我有一个包含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。假设在一些机器中,A.jar和B.jar中是否存在Test.class,在一些机器中从A.jar加载Test.class,它将从B.jar加载,基于首先列出的jar(JAVA API)文档说明了listFiles()方法不保证任何特定的上市顺序。)
假设两者都是A.jar&amp; B.jar存在于tomcat $ CATALINA_HOME / lib目录中,jar tomcat将从该目录加载Test.class。
我需要解释tomcat如何在这个特定场景中从jar文件加载类。
提前致谢。
答案 0 :(得分:2)
它的java本机调用。
所以我们无法控制它。
所以你在做过程之前使用sort。
您可以编写自己的Comparator
进行排序。
答案 1 :(得分:1)