如果我的RAD中有2个java项目。项目#1有一个这样的类:
/src/com/orgname/model/Model1.java
在Project#2中,我也有:
/src/com/orgname/model/Model1.java
这两个类都编译得很好。现在,在Project#2中,我将Project#1添加为构建路径依赖项。现在在我的项目#2中,我写了一个测试类:import com.orgname.model.Model1
将导入哪个Model1?
答案 0 :(得分:2)
拥有重复的课程副本是一个糟糕的主意!它可以编译得很好,甚至可以在10次中运行9次,但是没有(简单的)方法可以确保在运行时将其加载到另一个上面!
事实上,当存在这样的重复项时(无论是.class文件还是.jars),非常常见的情况是,在某些情况下,版本1会被加载,而其他时候版本2.当发生这种情况时,错误的类是返回,您将获得ClassNotFound或类似的异常。调试非常令人沮丧,因为您的代码可能无法可靠地失败。
当工件发生这种情况时,它被称为JAR Hell,但原则是相同的:每当你有一个具有相同包和名称的类的两个副本时,你就会遇到麻烦。
相反,在您的某个项目中更改Model1的名称,或使用不同的包装来区分这两者。