我有一个Java项目Parent
,它取决于Child
子项目(以JAR的形式)。此Child
取决于库A
和B
,并且与Child
捆绑在一起。 Parent
也使用A
和B
(意思是直接调用,而不是通过Child
间接调用。我希望能够包含A
和{{1}在我的项目中只有一次JAR。
当我编译B
时,我会在引用库Parent
和cannot find symbol
时获得A
。我相信这是因为B
在编译时路径上,但由于某种原因,其中的库不是。
我使用ant作为我的构建工具 - 在我的嵌套jar的javac标签中,我应该做些什么特别的事情吗?现在在Child
的build.xml中我有:
Parent
这应该包括我的lib文件夹中的所有jar,但它似乎不包括jar中的所有jar。
答案 0 :(得分:1)
我假设A.jar
和B.jar
是第三方库,而不是您自己构建的输出。
在这种情况下,解决此问题的一种方法是为第三方库创建项目或目录,然后由多个项目使用。在您描述的环境中,您的Child
项目会将它们捆绑到自己的构建输出中,Parent
项目将直接在其类路径中使用它们。
让我们说你在文件系统中创建与你的其他项目相同级别的thirdparty
项目:
thirdparty
lib
A.jar
B.jar
Parent
build.xml
src
Child
build.xml
src
在构建文件中,您可以定义第三方项目的位置:
<property name="thirdparty" value="../thirdparty"/>
并在路径中引用它:
<include name="${thirdparty}/lib/A.jar"/>
<include name="${thirdparty}/lib/B.jar"/>
答案 1 :(得分:0)
我的问题源于Java无法原生引用jar中的jar。您需要使用http://one-jar.sourceforge.net/之类的东西来解决它。