我目前正在尝试在我的一个项目中使用 Hibernate ORM。当我尝试启动一个 ServiceRegistry 对象时,我收到一条我无法解决的错误消息,即使我一直在查看几个教程并且似乎每次都遇到相同的错误。
我正在使用 Tomcat 和 Jersey 运行 Hibernate。
这是启动 Hibernate 的类:
import com.example.hibernate.HibernateUtil;
import com.example.hibernate.entities.Users;
import org.hibernate.Session;
import java.util.Date;
public class Spider
{
public Spider(){
Users user = new Users();
user.setUserid(1);
user.setUsername("Quncage");
user.setEmail("quncage@example.com");
Date now = new Date();
int Time = (int) (now.getTime()/1000);
user.setRegister_time(Time);
user.setActive(1);
user.setBanned(0);
user.setVacation(0);
user.setConfimed(1);
user.setUltra_user(1);
//Get Session
Session session = HibernateUtil.getSessionFactory().getCurrentSession();
//start transaction
session.beginTransaction();
//Save the Model object
session.save(user);
//Commit transaction
session.getTransaction().commit();
System.out.println("Userid="+user.getUserid());
//terminate session factory, otherwise program won't end
HibernateUtil.getSessionFactory().close();
}
}
这是 HibernateUtil 函数:
import org.hibernate.SessionFactory;
import org.hibernate.boot.registry.StandardServiceRegistryBuilder;
import org.hibernate.cfg.Configuration;
import org.hibernate.service.ServiceRegistry;
public class HibernateUtil
{
//XML based configuration
private static SessionFactory sessionFactory;
private static SessionFactory buildSessionFactory() {
try {
// Create the SessionFactory from hibernate.cfg.xml
Configuration configuration = new Configuration().configure("hibernate.cfg.xml");
System.out.println("Hibernate Configuration loaded");
/* Error seems to be triggered here */
ServiceRegistry serviceRegistry = new StandardServiceRegistryBuilder().applySettings(configuration.getProperties()).build();
System.out.println("Hibernate serviceRegistry created");
SessionFactory sessionFactory = configuration.buildSessionFactory(serviceRegistry);
return sessionFactory;
}
catch (Throwable ex) {
// Make sure you log the exception, as it might be swallowed
System.err.println("Initial SessionFactory creation failed." + ex);
throw new ExceptionInInitializerError(ex);
}
}
public static SessionFactory getSessionFactory() {
if(sessionFactory == null) sessionFactory = buildSessionFactory();
return sessionFactory;
}
}
错误信息:
[2014-06-08 02:29:17,946] Artifact server:war exploded: Artifact is being deployed, please wait...
08-Jun-2014 14:29:18.454 INFO [RMI TCP Connection(3)-127.0.0.1] org.glassfish.jersey.servlet.init.JerseyServletContainerInitializer.addServletWithApplication Registering the Jersey servlet application, named Spider, at the servlet mapping /rest/, with the Application class of the same name.
08-Jun-2014 14:29:18.948 INFO [RMI TCP Connection(3)-127.0.0.1] org.hibernate.annotations.common.Version.<clinit> HCANN000001: Hibernate Commons Annotations {4.0.2.Final}
08-Jun-2014 14:29:18.956 INFO [RMI TCP Connection(3)-127.0.0.1] org.hibernate.Version.logVersion HHH000412: Hibernate Core {4.2.2.Final}
08-Jun-2014 14:29:18.958 INFO [RMI TCP Connection(3)-127.0.0.1] org.hibernate.cfg.Environment.<clinit> HHH000206: hibernate.properties not found
08-Jun-2014 14:29:18.960 INFO [RMI TCP Connection(3)-127.0.0.1] org.hibernate.cfg.Environment.buildBytecodeProvider HHH000021: Bytecode provider name : javassist
08-Jun-2014 14:29:19.062 INFO [RMI TCP Connection(3)-127.0.0.1] org.hibernate.cfg.Configuration.configure HHH000043: Configuring from resource: hibernate.cfg.xml
08-Jun-2014 14:29:19.062 INFO [RMI TCP Connection(3)-127.0.0.1] org.hibernate.cfg.Configuration.getConfigurationInputStream HHH000040: Configuration resource: hibernate.cfg.xml
08-Jun-2014 14:29:19.107 INFO [RMI TCP Connection(3)-127.0.0.1] org.hibernate.cfg.Configuration.addResource HHH000221: Reading mappings from resource: Users.hbm.xml
Hibernate Configuration loaded
08-Jun-2014 14:29:19.140 INFO [RMI TCP Connection(3)-127.0.0.1] org.hibernate.cfg.Configuration.doConfigure HHH000041: Configured SessionFactory: null
Initial SessionFactory creation failed.java.lang.NoSuchMethodError: org.hibernate.integrator.internal.IntegratorServiceImpl.<init>(Ljava/util/LinkedHashSet;Lorg/hibernate/boot/registry/classloading/spi/ClassLoaderService;)V
[2014-06-08 02:29:19,171] Artifact server:war exploded: Artifact is deployed successfully
[2014-06-08 02:29:19,171] Artifact server:war exploded: Deploy took 1,225 milliseconds
我无法弄清楚为什么我会在下面收到此错误。我一直在寻找很多,但找不到遇到同样错误的人。对于此事,我将不胜感激!
java.lang.NoSuchMethodError: org.hibernate.integrator.internal.IntegratorServiceImpl.<init>(Ljava/util/LinkedHashSet;Lorg/hibernate/boot/registry/classloading/spi/ClassLoaderService;)V