我正在学习休眠,所以我做了一个小应用,用MySQL作为数据库进行CRUD操作。然而,我收到了一些错误,并且我在任何地方都找不到解决方案。SDK 17.0.2,我不是使用maven,而且所有Hibernate最终JAR文件都已添加
我的班级:
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;
import com.luv2code.hibernate.demo.entity.Student;
public class CreateStudentDemo {
public static void main(String[] args) {
// Create session factory
SessionFactory factory= new Configuration()
.configure("hibernate.cfg.xml")
.addAnnotatedClass(Student.class)
.buildSessionFactory();
//Create session
Session session = factory.getCurrentSession();
try {
//Create a Student object
System.out.println("Creating new student");
Student tempStudent = new Student("Pau;", "Wall", "paul@luv2code.com");
//Start a transaction
session.beginTransaction();
//save the student object
session.save(tempStudent);
//commit transaction
session.getTransaction().commit();
}
finally {
factory.close();
}
}
}
运行时错误:
java.security.PrivilegedActionException: java.lang.NoSuchMethodException: sun.misc.Unsafe.defineClass(java.lang.String,[B,int,int,java.lang.ClassLoader,java.security.ProtectionDomain)
Caused by: java.lang.NoSuchMethodException: sun.misc.Unsafe.defineClass(java.lang.String,[B,int,int,java.lang.ClassLoader,java.security.ProtectionDomain)
Exception in thread "main" java.lang.NullPointerException: Cannot invoke "java.lang.reflect.Method.invoke(Object, Object[])" because "com.sun.xml.bind.v2.runtime.reflect.opt.Injector.defineClass" is null
2条答案
按热度按时间pexxcrt21#
Java从Java 9及更高版本中删除了java.xml.ind。您需要手动将these JAR文件添加到库中,基本上可以通过这种方式添加到库中。如果你使用IntelliJ,这是最简单的方式:
Jaxb-impl-2.3.0.jar
Jaxb-core-2.3.0.jar
Jaxb-api-2.3.1.jar
Javax.activation-api-1.2.0.jar
如果您使用IntelliJ,下面是通过IDE获取这些文件的步骤
1.进入项目结构:
1.库,点击+符号
1.Chick to From Maven:
1.将这些依赖项粘贴到搜索中。
它将自动找到要下载的确切JAR文件,Kist粘贴它并单击Enter That is It。
以后,您也可以将这些文件添加到类路径中,以防万一:
rjee0c152#
Java从Java 9及更高版本中删除了java.xml.ind。以下是ECLIPSE的解决方案:
在Eclipse IDE中:
1.下载JAR文件,粘贴到lib文件夹中:
1.转到项目属性:最后一行
1.完成以下步骤:
编码快乐!:)