0

我正在尝试使用 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 ");

  }
} 

雇员.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 下的默认包中。

4

1 回答 1

1

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

也许您正在加载的 jar 版本不正确。

public static void main(String[] args) {
            URLClassLoader classLoader = (URLClassLoader)IbatisInsert.class.getClassLoader();
            System.out.println(Arrays.toString(classLoader.getURLs()));
    }
于 2012-11-30T07:25:36.880 回答