我的代码在下面给出错误;
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();
}
答案 0 :(得分:6)
这是由于运行时JAR或类不匹配造成的。 "客户"编译应用程序时在那里的类有一个静态方法" cypherCBC"它获取String参数,但在运行时类加载器已加载"客户端"没有这种方法的类(具有相同签名的同名)。
如果你可以在运行时调试应用程序,在抛出异常的行放置一个断点,然后尝试评估以下表达式,
Client.class.getResource("Client.class")
,然后你可以找到该类的来源,然后你可以反编译并尝试解决问题。
答案 1 :(得分:1)
在Weblogic中运行Web应用程序时遇到相同的错误。 该错误的原因是环境中存在两个版本的类。要解决此问题,必须弄清楚运行时使用的是哪个.class。 我使用以下代码来确定在运行时加载了哪个类。
-verbose:class