Java 需要对类加载器进行解释

Java 需要对类加载器进行解释,java,tomcat,jar,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()

我有一个包含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()])));
List jarsToLoad=new ArrayList();
File jarDir=新文件(“包含jar文件的目录名”);
对于(文件jarFile:jarDir.listFiles())
{
add(新URL(“file”,null,jarFile.getPath());
}
Thread.currentThread().setContextClassLoader(新的URLClassLoader(jarsToLoad.toArray)(新的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本机调用

所以我们无法控制它

所以,在执行该过程之前使用sort


您可以编写自己的
比较器来对其进行排序

这就是你需要知道的一切


谢谢你的回复。我试图复制tomcat类装入器的行为。我想知道tomcat是否在做这样的排序,如果是的话,他们是如何排序的(按字母顺序还是使用其他参数排序)?