NoSuchMethodError

xue777hua 发布于 2014/06/30 13:39
阅读 221
收藏 0

今天遇到一个NoSuchMethod的错误,十分奇怪,求帮忙看看。

下面是StackTrace:

01:08:23,786 -  ERROR   <tiaa_alonso_9903> <C> <_THRpool-1-thread-7_> <TIA:001:TIA::> <> Caused by: java.lang.NoSuchMethodError: com.scivantage.middleware.dataaccess.tv.SiteUserAccount.updateNickname(Ljava/sql/Connection;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V

01:08:23,786 -  ERROR   <tiaa_alonso_9903> <C> <_THRpool-1-thread-7_> <TIA:001:TIA::> <>        at com.scivantage.middleware.singleSignOn.SingleSignOnServer.updateLinkedAccountNickname(SingleSignOnServer.java:521)
01:08:23,786 -  ERROR   <tiaa_alonso_9903> <C> <_THRpool-1-thread-7_> <TIA:001:TIA::> <>        at com.scivantage.middleware.singleSignOn.SingleSignOnServer.syncLinkedAccounts(SingleSignOnServer.java:496)
01:08:23,786 -  ERROR   <tiaa_alonso_9903> <C> <_THRpool-1-thread-7_> <TIA:001:TIA::> <>        at com.scivantage.middleware.singleSignOn.SingleSignOnServer.accept(SingleSignOnServer.java:229)
01:08:23,786 -  ERROR   <tiaa_alonso_9903> <C> <_THRpool-1-thread-7_> <TIA:001:TIA::> <>        ... 38 more

01:08:23,786 -  DEBUG   <tiaa_alonso_9903> <D> <_THRpool-1-thread-7_> <TIA:001:TIA::> <DefaultBeanImpl> CLOSING CONNECTION

下面是 javap 查看到的结果,可见updateNickname这个方法是存在的。

01:36 AM chameleon@alonso :~/qa/deployments/tiaa_alonso_9903$ javap -classpath tmp.chameleon.war/WEB-INF/lib/middleware.jar com/scivantage/middleware/dataaccess/tv/SiteUserAccount
Compiled from "SiteUserAccount.java"
public class com.scivantage.middleware.dataaccess.tv.SiteUserAccount extends java.lang.Object implements java.io.Serializable,java.lang.Cloneable{
    public java.lang.String client_id;
    public java.lang.String product_id;
    public java.lang.String site_id;
    public java.lang.String svi_user_id;
    public java.lang.String bo_id;
    public java.lang.String bo_client_id;
    public java.lang.String branch_cd;
    public java.lang.String account_cd;
    public java.lang.String nickname_txt;
    public java.lang.Object clone()       throws java.lang.CloneNotSupportedException;
    public boolean equals(java.lang.Object);
    public int hashCode();
    public static final java.lang.String columnList();
    public com.scivantage.middleware.dataaccess.tv.SiteUserAccount();
    public com.scivantage.middleware.dataaccess.tv.SiteUserAccount(java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String);
    public static boolean exists(java.sql.Connection, java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String)       throws java.sql.SQLException;
    public boolean load(java.sql.Connection, java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String)       throws java.sql.SQLException;
    public static com.scivantage.middleware.dataaccess.tv.SiteUserAccountData[] list(java.sql.Connection, java.lang.String)       throws java.sql.SQLException;
    public static void fetch(java.sql.Connection, java.sql.ResultSet, com.scivantage.middleware.dataaccess.tv.SiteUserAccountData)       throws java.sql.SQLException;
    public void create(java.sql.Connection)       throws java.sql.SQLException;
    public void store(java.sql.Connection)       throws java.sql.SQLException;
    public static void remove(java.sql.Connection, com.scivantage.middleware.dataaccess.tv.SiteUserAccountPK)       throws java.sql.SQLException;
    public void setData(com.scivantage.middleware.dataaccess.tv.SiteUserAccountData);
    public com.scivantage.middleware.dataaccess.tv.SiteUserAccountData getData();
    public void log();
    public static void updateNickname(java.sql.Connection, java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String)       throws java.sql.SQLException;
}


求解释。谢谢!

加载中
0
Jerikc
Jerikc
检查一下package
0
xue777hua
xue777hua

引用来自“Jerikc”的评论

检查一下package
怎么检查?
0
Jerikc
Jerikc

引用来自“Jerikc”的评论

检查一下package

引用来自“xue777hua”的评论

怎么检查?
检查调用该函数的地方是否有import该函数所在package。
0
xue777hua
xue777hua

引用来自“Jerikc”的评论

检查一下package

引用来自“xue777hua”的评论

怎么检查?

引用来自“Jerikc”的评论

检查调用该函数的地方是否有import该函数所在package。

谢谢回复。

有import,而且我后来改用了全局包引用该静态方法,依然报错NoSuchMethodError。

我现在怀疑是加载错了类,但是在ErrorTrace上显示出来的类路径,感觉又不是加载错了类。

0
tommcat
tommcat

给你一段代码 
插在出现问题的地方 
可以看一下到底是哪个jar文件出的问题。

/**
     * find jar file 
     */ 
    String LOCATION = ""; 
    String URLLOCATION = ""; 
    try {     
		LOCATION =[YourJavaFile].class.getProtectionDomain().getCodeSource().getLocation().getFile(); 
		URLLOCATION =  URLDecoder.decode(LOCATION, "UTF-8"); 
    } catch (UnsupportedEncodingException e) { 
		logger.error("get LOCATION error", e); 
    } 
    logger.debug("** loc=" + LOCATION + "; URLLoc=" + URLLOCATION);



0
xue777hua
xue777hua
非常感谢大家,最后发现是公司另一个团队维护的一个jar包里面的某个方法和我的方法路径确重名了。。。
返回顶部
顶部