假设我在构建项目时在classpath上有两个jar文件 - myJarFile.jar和myJarFileOld.jar。它们包含相同的包和相同的类,但myJarFileOld.jar包含旧的实现,这导致编译失败。我不是要求解决这个错误,我知道我应该删除myJarFileOld.jar来进行编译工作。但是我想知道,当两个jar文件都存在时,什么机制决定在编译期间哪个类使用哪个jar文件?
答案 0 :(得分:0)
当需要加载类时,将按顺序扫描类路径中的所有jar文件。一旦找到课程,它就会被加载。
答案 1 :(得分:0)
不完全确定,但我相信classpath外观的顺序正在决定。如果它在第一个jar中找到,那么它不会在另一个jar中搜索。但是我很确定类加载器会在开头加载两个jar,你会得到一些关于重复代码的错误。但是我不确定这一点,这可能与运行时环境有关。
答案 2 :(得分:0)
您在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。