2010-11-07 180 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一起放入类路径中。