假設我有一個java項目myProject
,並使用外部庫jar(someJar.jar
),它具有com.somepackage.Class1.class
類。如何避免Java中的「重複類」
現在我找到了更新版本的Class1.java
,它修復了原始jar中的錯誤。
我包括我的源代碼的新Class1.java
下包com.somepackage
當我生成項目(例如,使用NetBeans),有一個dist\myProject.jar
含有類com.somepackage.Class1.class
和dist\lib\someJar.jar
其中還包含有一類同名。
當我運行該文件(例如,使用java -jar dist\myProject.jar
)時,會使用新版本Class1.class
(如我所願)。
Java如何決定在重複的情況下運行哪個類文件?有什麼方法可以指定優先級嗎?
有沒有「正確」的方法來避免這種衝突?
在Proguard中,當我嘗試壓縮我的代碼時,出現
duplicate class
錯誤。我如何消除這種情況?
我可以那樣做。但是,如果將來某人用升級版本(沒有錯誤修正)替換該jar,則更改將會丟失。我更願意將java源代碼保留在項目中,以確保bug修復不會丟失。是否有可能在構建工具中完成?注意:錯誤修復不是庫的官方版本的一部分,也可能不是下一個版本的一部分。 – Jus12
@ Jus12:當然,您可以創建一個更新的jar文件作爲構建過程的一部分,創建一個jar文件的副本,然後更新該類。但是,我會說你仍然有問題 - 這個類可能*已經在新版本的jar文件中更新,所以使用獨立的bug-fix類文件會導致問題。是否有任何理由爲什麼bug修復*不會成爲新版本jar的一部分? –
我正在討論'smack' xmpp庫,並且bug-fix是對'BOSH'的額外支持。截至目前,smack不支持BOSH,這種攻擊是必不可少的。不知道他們爲什麼不支持它。 – Jus12