我有两个 java 项目 Test1 和 Test2。Test1 在其 Eclipse Java Build Path 中添加了一个库库。Test2 在其构建路径中添加了一个 jar。
Test1 Test2
/src /src
lib Referenced Libraries
x-1.1.jar a.jar
y.jar x-1.2
z
Test1 中的代码调用依赖于 x-1.1.jar 的 y.jar 的函数/类。我不知道 y.jar 使用了 x-1.1.jar 的哪些函数/类,因为我没有 jar 的来源。类似地,Test2 调用 a.jar 的 z 包的函数/类,这些函数/类依赖于 x-1.2 版本的 jar。
现在我有一个测试项目,我需要两个项目 Test1 和 Test2
Test
/src
Test1 code
Test2 code
some other code which uses Test1 as well as Test2 libraries
lib
x-1.1.jar
y.jar
Referenced Libraries
a.jar
x-1.2
z
现在,当我运行测试项目时,我陷入了 jar-hell 的境地。我的研究使用的两种方法是:
- 类路径:这种方法的问题在于,由于 Test1 和 Test2 的库/jar 都添加到了 eclipse Java 构建路径中,因此只能访问第一个加载的 x.jar 版本,并且即使使用类加载器,Test2 代码也会中断。
- osgi:方法的问题是我只能从 osgi 包中导出 Test1 和 Test2 的 src 文件夹中的包,而不是项目引用的包。但是 Test 项目的代码使用了 Test1 和 Test2 库。
希望我足够清楚。任何帮助是极大的赞赏。提前致谢。
在问题中添加更多信息:我必须在我的项目中使用两个不同的 java sdk,它们捆绑了不同的 jar 文件。有冲突的是:
jar file Test1 ver Test2 ver
org.apache.commons.codecs 1.3 1.6
org.apache.commons.logging 1.1.1 1.1.1
org.apache.log4j 1.2.7 1.2.15
httpclient 4.1.1 4.0.3
httpcore 4.1 4.1.4
有什么可能的方法来做到这一点?