“线程中的异常”;“主要”;java.lang.NoSuchMethodError:com.ibatis.common.beans.ClassInfo.setCacheEnabled(Z)V

“线程中的异常”;“主要”;java.lang.NoSuchMethodError:com.ibatis.common.beans.ClassInfo.setCacheEnabled(Z)V,java,eclipse,ibatis,Java,Eclipse,Ibatis,我正在尝试使用iBatis的桌面应用程序。但我有以下错误。在网上找不到合适的解决方案。请任何人帮我解决 日志:: Exception in thread "main" java.lang.NoSuchMethodError: com.ibatis.common.beans.ClassInfo.setCacheEnabled(Z)V at com.ibatis.sqlmap.engine.builder.xml.SqlMapConfigParser$3.process(SqlMapConfigPa

我正在尝试使用iBatis的桌面应用程序。但我有以下错误。在网上找不到合适的解决方案。请任何人帮我解决

日志::

Exception in thread "main" java.lang.NoSuchMethodError: com.ibatis.common.beans.ClassInfo.setCacheEnabled(Z)V
at com.ibatis.sqlmap.engine.builder.xml.SqlMapConfigParser$3.process(SqlMapConfigParser.java:179)
at com.ibatis.common.xml.NodeletParser.processNodelet(NodeletParser.java:112)
at com.ibatis.common.xml.NodeletParser.process(NodeletParser.java:75)
at com.ibatis.common.xml.NodeletParser.process(NodeletParser.java:93)
at com.ibatis.common.xml.NodeletParser.parse(NodeletParser.java:63)
at com.ibatis.common.xml.NodeletParser.parse(NodeletParser.java:51)
at com.ibatis.sqlmap.engine.builder.xml.SqlMapConfigParser.parse(SqlMapConfigParser.java:86)
at com.ibatis.sqlmap.client.SqlMapClientBuilder.buildSqlMapClient(SqlMapClientBuilder.java:63)
at IbatisInsert.main(IbatisInsert.java:12)
代码::IbatisInsert.java

import com.ibatis.common.resources.Resources;
import com.ibatis.sqlmap.client.SqlMapClient;
import com.ibatis.sqlmap.client.SqlMapClientBuilder;
import java.io.*;
import java.sql.SQLException;
import java.util.*;

public class IbatisInsert{
  public static void main(String[] args)
   throws IOException,SQLException{
   Reader rd = Resources.getResourceAsReader("SqlMapConfig.xml");
   SqlMapClient smc = SqlMapClientBuilder.buildSqlMapClient(rd);

   /* This would insert one record in Employee table. */
   System.out.println("Going to insert record.....");
   Employee em = new Employee("Zara", "Ali", 5000);

   smc.insert("Employee.insert", em);

   System.out.println("Record Inserted Successfully ");

  }
} 
Employee.java

public class Employee {
      private int id;
      private String first_name; 
      private String last_name;   
      private int salary;  

      /* Define constructors for the Employee class. */
      public Employee() {}

      public Employee(String fname, String lname, int salary) {
        this.setFirst_name(fname);
        this.setLast_name(lname);
        this.setSalary(salary);
      }

    public String getFirst_name() {
        return first_name;
    }

    public void setFirst_name(String first_name) {
        this.first_name = first_name;
    }

    public String getLast_name() {
        return last_name;
    }

    public void setLast_name(String last_name) {
        this.last_name = last_name;
    }

    public int getSalary() {
        return salary;
    }

    public void setSalary(int salary) {
        this.salary = salary;
    }
    } /* End of Employee */

我将这两个类都放在src下的默认包中。

问题在于类加载/classpath。尝试在主类中使用这段代码,并找出jar加载的路径

可能您正在加载的jar版本不正确

public static void main(String[] args) {
            URLClassLoader classLoader = (URLClassLoader)IbatisInsert.class.getClassLoader();
            System.out.println(Arrays.toString(classLoader.getURLs()));
    }

看起来像是jar冲突问题。这段代码是用其他版本的iBatis编译的,并在其他版本上运行。我是iBatis的新手,我需要所有的JAR。我有以下jar::1>ibatis-commons-2.jar 2>ibatis-2.3.0.677.jar 3>spring.jar 4>mysql-connector-java-5.1.5。JAR@AbhijeetSinha问题不是因为JAR不足,而是JAR版本不正确。我已经给出了下面的代码,请试着运行它。也许类加载器正在从其他地方获取jar。上面的代码将为您提供解决依赖关系的所有路径。