java.lang.NoSuchMethodError - Ljava / lang / String;)Ljava / lang / String;

时间:2016-08-29 05:17:16

标签: java

我的代码在下面给出错误;

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();
        } 

2 个答案:

答案 0 :(得分:6)

这是由于运行时JAR或类不匹配造成的。 "客户"编译应用程序时在那里的类有一个静态方法" cypherCBC"它获取String参数,但在运行时类加载器已加载"客户端"没有这种方法的类(具有相同签名的同名)。

如果你可以在运行时调试应用程序,在抛出异常的行放置一个断点,然后尝试评估以下表达式,

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

,然后你可以找到该类的来源,然后你可以反编译并尝试解决问题。

答案 1 :(得分:1)

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

  

-verbose:class