Java 如何避免;“重复类”;在爪哇
假设我有一个java项目Java 如何避免;“重复类”;在爪哇,java,Java,假设我有一个java项目myProject,并且正在使用一个外部库jar(someJar.jar),它有一个类com.somepackage.Class1.class 现在我找到了Class1.java的更新版本,它修复了原始jar中的一个bug 我将新的Class1.java包含在包com.somepackage 当我构建项目时(例如,使用Netbeans),有一个dist\myProject.jar包含类com.somepackage.Class1.class,还有一个dist\lib\so
myProject
,并且正在使用一个外部库jar(someJar.jar
),它有一个类com.somepackage.Class1.class
现在我找到了Class1.java
的更新版本,它修复了原始jar中的一个bug
我将新的Class1.java
包含在包com.somepackage
当我构建项目时(例如,使用Netbeans),有一个dist\myProject.jar
包含类com.somepackage.Class1.class
,还有一个dist\lib\someJar.jar
,它也包含一个同名的类
当我运行该文件时(例如,使用java-jar dist\myProject.jar
),将使用Class1.class
的新版本(如我所愿)
重复类
错误。我如何消除这种情况你不能创建一个更新的jar文件,其中包含错误修复吗?如果没有相同完全限定类的两个版本,事情会简单得多。1)更新的Jar是一个更好的解决方案 2) 使用不同的类名。是否有一个原因,为什么要使用相同的类名和相同的打包?我认为没有理由 3) 创建一个包装器/代理类,它封装了对jar的所有调用,您可以决定调用这个修复bug的新类(前提是它有不同的名称和包装)
我能做到。但是,如果将来有人用升级版本(没有错误修复)替换jar,那么更改将丢失。我更喜欢将java源代码保留在项目中,以确保错误修复不会丢失。是否可以在构建工具中执行此操作?注意:错误修复不是库的正式版本的一部分,也可能不是下一版本的一部分。@Jus12:您当然可以在构建过程中创建一个更新的jar文件,创建jar文件的副本,然后只更新该类。但是,我要说的是,您仍然有问题-该类也可能在新版本的jar文件中进行了更新,因此使用独立的bug fix类文件将导致问题。有什么理由不让bug修复成为jar新版本的一部分吗?我说的是
smack
xmpp库,bug修复是对BOSH
的额外支持。到目前为止,smack不支持BOSH,这是使其正常工作所必需的。不知道为什么他们还不支持它。时间和资源8-(你应该签出代码,安装补丁并构建自己的jar自定义版本。如果类(其中有bug)是由第三方代码实例化的,你不能只提供一个新的、不同的类。是的,这就是我必须保留相同名称的原因。