Java jar类文件与具有相同名称和包的本地类

Java jar类文件与具有相同名称和包的本地类,java,jar,packages,Java,Jar,Packages,我有一个情况,我有jar文件,其中包含 com.somepackage.ABC.class文件 我在本地工作区创建了com.somepackage.ABC.java(名称和包相同)重写ABC.java 我得到的问题,当我运行我的程序,它始终是一个ABC文件 不是我的本地。应尽可能删除包和类名称中的冲突。只需使用另一个类名(例如DEF)或另一个包名。有很多方法可以使用类似的机制来实现这一点 假设您必须忍受冲突,默认情况下,您的结果将取决于启动JVM的类路径。将本地ABC.java编译到当前文件夹中

我有一个情况,我有jar文件,其中包含
com.somepackage.ABC.class
文件 我在本地工作区创建了
com.somepackage.ABC.java
(名称和包相同)重写
ABC.java
我得到的问题,当我运行我的程序,它始终是一个ABC文件
不是我的本地。

应尽可能删除包和类名称中的冲突。只需使用另一个类名(例如
DEF
)或另一个包名。有很多方法可以使用类似的机制来实现这一点


假设您必须忍受冲突,默认情况下,您的结果将取决于启动JVM的类路径。将本地
ABC.java
编译到当前文件夹中的
ABC.class
(实际类在
com/somepackage
中)之后,应该将类路径设置为:
java-cp.:path/to/foo.jar
(在Unix上)或
java-cp.\path\to\foo.jar
(在Windows上),则您的本地类将优先于JAR文件中的类。

您是否正在尝试修改JAR文件的内容?如何重新打包JAR?尝试一些工具,例如,它将帮助您轻松完成此操作。不建议一个类有两个版本,请参见。总之,您的问题是什么?嗨,Jean,同一个JAR文件具有调用ABC对象作为引用。我在本地重写ABC类,所以我尝试使用新功能。因为这可能是一个愚蠢的问题,我应该在哪里添加java-cp.;path\to\foo.jar。我使用的是tomcat 6Oh,这在您的原始问题中并不明显。请参阅。在这种情况下,您需要使用路径(顶部文件夹),而不是前面的“.”您的
ABC.class
版本所在的位置。