2010-11-07 102 views
0

假設我有一個依賴於JAR A中的類的項目,後者對JAR B中的類有依賴關係。要運行該項目,兩個jars都需要位於同一個類路徑中。我有所有三個部分的源代碼 - 項目,JAR A和JAR B.重新編譯Jar依賴關係

如果我更改JAR B中類中方法的內部而不更改API,是否需要重新編譯JAR A來對付它,還是我可以把它放到項目的類路徑中去?

如果我想一想,我不認爲我需要,但我只是想仔細檢查。當我只是想將額外的日誌記錄添加到對JAR A沒有影響的JAR B時,它總是非常煩人的複製文件。

+0

聽起來很簡單的測試! – pstanton 2010-11-07 22:48:56

回答

0

填充Jar A的代碼只需要能夠編譯以創建jar即可。

如果它依賴於罐B到編譯,則罐B需要存在的範圍內,它滿足所有由代碼罐A.

相反也是如此向它提出的參考文獻中。

一旦Jar A的代碼編譯完成,您可以創建它的jar並忘記它。

然後,只要API Jar A使用的API不會更改,就可以隨意更改Jar B.

EG:

在罐乙你定義一個函數:

public class JarBClass 
{ 
    public static void doSomething() 
    { 
     throw new RuntimeException(); 
    } 
} 

此編譯並可以創建罐B.

在罐子您引用功能:

public class JarAClass 
{ 
    public static void useSomething() 
    { 
     JarBClass.doSomething(); 
    } 
} 

這個編譯和你可以創建罐子A,但運行它會拋出一個異常。

您可以更新您的Jar B碼:

public class JarBClass 
{ 
    public static void doSomething() 
    { 
     System.out.println("all good"); 
    } 
} 

這編譯,你可以重新創建罐B.罐子可以無一例外運行。

但是如果你更新瓶B和改變API:

public class JarBClass 
{ 
    public static void doSomething(String what) 
    { 
     System.out.println(what + " is all good"); 
    } 
} 

您將需要修改和重新編譯罐A.

3

我認爲你是正確的:你只需重新創建JAR B包含新類並將其與JAR A和C一起放入類路徑中。