假设我有一个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