2014-11-03 41 views
0

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

回答

0

当需要加载一个类时,将按顺序扫描classpath中的所有jar文件。一旦找到课程,它就会被加载。

0

不完全确定,但我相信类路径外观的顺序是决定的。如果它在第一个jar中找到,那么它不是在另一个中搜索。不过,我很确定类加载器会在开始时加载这两个jar,并且你会得到一些关于重复代码的错误。不过我不确定,这可能与运行时环境有关。

0

你必须在Eclipse此功能,您可以指定您希望从项目classpath.Go执行下一次

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

罐子的顺序生成项目从罐子类路径将按照您指定的顺序挑选。

+0

不错的功能,谢谢,但不适用于我。我们使用ANT进行编译,类路径由更多源组成,其中一个源是项目中包含的整个lib目录。我只是想知道汇编的细节,我希望在这里得到一些信息。 – Michal 2014-11-03 13:18:33