java.lang.NoSuchMethodError - com/myApp/Client.cypherCBC(Ljava/lang/String;)Ljava/lang/String;

问题描述 投票:0回答:4

我的代码出现以下错误;

Exception in thread "main" java.lang.NoSuchMethodError: com/myApp/Client.cypherCBC(Ljava/lang/String;)Ljava/lang/String;

但它在另一个本地环境中运行良好。到目前为止我的代码如下;

try {
    System.out.println("Encrypted CBC passwd : "
         + Client.cypherCBC("CypherThePassword"));
} catch (Exception e) {
    e.printStackTrace();
}
java nosuchmethoderror
4个回答
8
投票

这是由于运行时 JAR 或类不匹配造成的。编译应用程序时存在的“Client”类有一个静态方法“cypherCBC”,它获取 String 参数,但在运行时类加载器已加载“Client”类,该类没有这种方法(同名同签名)。

如果您可以在运行时调试应用程序,请在引发异常的行处放置一个断点,然后尝试计算以下表达式,

Client.class.getResource("Client.class")

,然后你就可以找到这个类是从哪里引出的,然后你可以反编译并尝试解决问题。


3
投票

我在 Weblogic 中运行 Web 应用程序时遇到了同样的错误。 出现此错误的原因是环境中有两个版本的类。要解决此问题,您必须弄清楚运行时正在使用哪个 .class。 我使用以下方法来确定在运行时加载哪个类。

-详细:类


0
投票

您的类路径上有一个重复的类。 因此,这就是为什么 JVM 会感到困惑,不知道需要选择哪一个,因为这两个类都有相同的方法,但您尝试调用的签名不同。


0
投票

从 Maven 存储库将 bcprov-jd* Jar 更新到最新版本,它将解决问题

© www.soinside.com 2019 - 2024. All rights reserved.