Java NoSuchMethodError 相同的类名

标签 java eclipse jar nosuchmethoderror

我在两个不同的 .jar 文件中有两个具有相同名称和相同包的 .class 文件

第一个 jar :
enter image description here

第二个 jar :
enter image description here

当我从 Eclipse 运行程序时,我没有问题,Eclipse 使用第一个 .class 文件(我必须使用第一个 .class,我不需要第二个 .class,我想排除它)。

当我导出可运行的 .jar 时,我看到它执行了第二个 .class 文件,然后我有 NoSuchMethodError 异常,因为第二个 .class 与第一个不同。

如何始终使用第一个 .class 并排除第二个? 我不需要第二个 .class,但我需要他的库中的其他类。

最佳答案

Java 从类路径加载类,该类路径是在 Eclipse 中运行应用程序时动态定义的,并由 jar 文件中 META-INF 下的文件 MANIFEST.MF 中的属性 Class-Path 控制。

因此,首先使用任何 ZIP 工具打开 jar 文件并查看 list 。尝试将jar文件的顺序更改为manifest并再次运行。我希望这个能帮上忙。

但是这是非常糟糕的,因为您的alive-matchmarker.jar包含它不应该包含的文件。我不知道它是什么库,但他们是否有可能拥有不包含自己的依赖项的其他发行版?或者可能尝试找到该库的其他版本。更糟糕的事情可能是,如果您的类路径中有同一类的不同版本:由于这种重复,您的应用程序的行为可能会出现错误且不可预测,因为您永远无法知道现在使用的是哪个版本的类。

关于Java NoSuchMethodError 相同的类名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19480489/

相关文章:

java - "too many parameters"警告的解决方案

java - JAR 应用程序的配置

java - Paypal Rest API SDK v2

java - 如何跟踪 Java 中的方法调用?

java - Akka Remote - 消息未传递(Java)

eclipse - 在 Eclipse 中将项目更新为 Git

java - Eclipse 为类练习设置 Maven 项目时出错 : Check $M2_HOME environment variable and mvn script match

java - Eclipse 中的死代码警告 - 这是 Eclipse 中的错误吗?还是我忽略了一些显而易见的事情?

java - 如何编译maven包上的classpath资源?

java - JAR 文件有时会运行但不起作用,或者根本不运行