“线程中的异常”;“主要”;java.lang.NoSuchMethodError:com.ibatis.common.beans.ClassInfo.setCacheEnabled(Z)V
我正在尝试使用iBatis的桌面应用程序。但我有以下错误。在网上找不到合适的解决方案。请任何人帮我解决 日志::“线程中的异常”;“主要”;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
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。上面的代码将为您提供解决依赖关系的所有路径。