/運行時類路徑我有了,二者含有一些相同的類的兩種不同的罐子的項目。我需要的是使用Jar「B」之前的Jar「A」中的類。在普通的Java編譯(和Ant)中,我可以指定類路徑本身的順序。這樣,我可以保證Jar「A」中的類將在Jar「B」中的類之前使用。常春藤 - 指定編譯常春藤
有沒有辦法在常春藤做到這一點?
我能想到這樣做的唯一方法是在我ivy.xml
創建兩個單獨的配置:
<dependency org="com.vegibank" name="a.jar"
rev="1.0" conf="foo->default"/>
<dependency org="com.vegibank" name="b.jar"
rev="1.0" conf="compile->default"/>
然後創建兩個單獨的pathclass引用:在<javac/>
<ivy:cachepath pathid="compile.foo.classpath"
conf="foo"/>
<ivy:cachepath pathid="compile.normal.classpath"
conf="compile"/>
然後,我可以指定路徑:
<javac ...>
<classpath refid="compile.foo.classpath"/>
<classpath refid="compile.normal.classpath"/>
</javac>
但是,我認爲當艾維正在做出決定時,必須有一種方法來保證罐子被加載到類路徑中的方式。
有沒有辦法做到這一點?
您的解決方案看起來不錯。說實話,我從來沒有遇到過這個問題(在classpath中混合相同的類)。我假設這是一些奇怪的第三方包裝問題? – 2013-04-24 21:00:39
@ MarkO'Connor - 我弄成這樣做我上面提到的方法:創建一個新的配置,所以我可以強制罐子是第一。開發商最終解決了這個問題。過時的jar類將該方法視爲返回一個枚舉器,新的jar類將該方法視爲返回一個迭代器。它在兩個或三個源文件中進行了一些小修改來修復它。當然,開發者會固定這個問題,但從來沒有編譯過,以確保它能正常工作。它無法編譯,因爲使用了過時的jar類。我不得不解決我的問題。 – 2013-04-25 15:15:08