Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/400.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 编译期间使用哪个jar文件?_Java_Jar_Compilation - Fatal编程技术网

Java 编译期间使用哪个jar文件?

Java 编译期间使用哪个jar文件?,java,jar,compilation,Java,Jar,Compilation,假设在构建项目时,类路径上有两个jar文件——myJarFile.jar和myJarFileOld.jar。它们包含相同的包和类,但是myJarFileOld.jar包含旧的实现,这导致编译失败。我不是在要求解决这个错误,我知道我应该删除myJarFileOld.jar以使编译工作正常。然而,我想知道,当两个jar文件都存在时,是什么机制决定编译过程中使用哪个类的jar文件?当需要加载一个类时,会依次扫描类路径中的所有jar文件。一旦找到类,它就会被加载。不完全确定,但我相信类路径的出现顺序正在

假设在构建项目时,类路径上有两个jar文件——myJarFile.jar和myJarFileOld.jar。它们包含相同的包和类,但是myJarFileOld.jar包含旧的实现,这导致编译失败。我不是在要求解决这个错误,我知道我应该删除myJarFileOld.jar以使编译工作正常。然而,我想知道,当两个jar文件都存在时,是什么机制决定编译过程中使用哪个类的jar文件?

当需要加载一个类时,会依次扫描类路径中的所有jar文件。一旦找到类,它就会被加载。

不完全确定,但我相信类路径的出现顺序正在决定。若它是在第一个罐子中找到的,那个么它就不会在另一个罐子中搜索。然而,我很确定类加载器将在开始时加载这两个JAR,并且您将得到一些关于重复代码的错误。但我不确定,这可能与运行时环境有关

Eclipse中有这个功能,您可以指定要从项目类路径执行的JAR的顺序

 Project->Select Properties->Select Build Path from left pane-> go to Order and Export Tab->Select Top or Bottom button-> click ok.

下次构建项目时,将按照指定的顺序从类路径中选取jar

很好的功能,谢谢,但对我来说不可用。我们使用ANT进行编译,类路径由多个源组成,其中一个源是项目中包含的整个lib目录。我只是想知道汇编的细节,我希望我能在这里得到一些信息。