Hibernate 在某些CentOS机器上将war部署到Tomcat时,ClassNotFoundException
我有一份战争档案。它是Java8Maven应用程序,带有一些Spring和Hibernate。 我可以在本地计算机(macOS)上成功部署它。 我还可以在安装了CentOS 3.10.0-514.el7.x86_64的VMware Fusion虚拟机上成功部署它。 但我无法在某些CentOS 3.10.0-514.2.2.el7.x86_64服务器上部署它。我得到下一个ClassNotFoundException:Hibernate 在某些CentOS机器上将war部署到Tomcat时,ClassNotFoundException,hibernate,tomcat,centos,classnotfoundexception,Hibernate,Tomcat,Centos,Classnotfoundexception,我有一份战争档案。它是Java8Maven应用程序,带有一些Spring和Hibernate。 我可以在本地计算机(macOS)上成功部署它。 我还可以在安装了CentOS 3.10.0-514.el7.x86_64的VMware Fusion虚拟机上成功部署它。 但我无法在某些CentOS 3.10.0-514.2.2.el7.x86_64服务器上部署它。我得到下一个ClassNotFoundException: 17-Feb-2017 18:21:54.727 SEVERE [localho
17-Feb-2017 18:21:54.727 SEVERE [localhost-startStop-1] org.apache.catalina.core.StandardContext.listenerStart Exception sending context initialized event to listener instance of class org.springframework.web.context.ContextLoaderListener
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'entityManagerFactory' defined in ServletContext resource [/WEB-INF/appContext.xml]: Invocation of init method failed; nested exception is java.lang.NoClassDefFoundError: org/hibernate/boot/registry/classloading/internal/ClassLoaderServiceImpl$Work
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1578)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:545)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:482)
at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:306)
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230)
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:302)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:197)
at org.springframework.context.support.AbstractApplicationContext.getBean(AbstractApplicationContext.java:1076)
at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:851)
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:541)
at org.springframework.web.context.ContextLoader.configureAndRefreshWebApplicationContext(ContextLoader.java:444)
at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:326)
at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:107)
at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4727)
at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5189) at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:752)
at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:728)
at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:734)
at org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:952)
at org.apache.catalina.startup.HostConfig$DeployWar.run(HostConfig.java:1823)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:745)
Caused by: java.lang.NoClassDefFoundError: org/hibernate/boot/registry/classloading/internal/ClassLoaderServiceImpl$Work
at org.springframework.orm.jpa.vendor.SpringHibernateJpaPersistenceProvider.createContainerEntityManagerFactory(SpringHibernateJpaPersistenceProvider.java:54)
at org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean.createNativeEntityManagerFactory(LocalContainerEntityManagerFactoryBean.java:338)
at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.buildNativeEntityManagerFactory(AbstractEntityManagerFactoryBean.java:373)
at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.afterPropertiesSet(AbstractEntityManagerFactoryBean.java:362)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1637)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1574)
... 25 more
Caused by: java.lang.ClassNotFoundException: org.hibernate.boot.registry.classloading.internal.ClassLoaderServiceImpl$Work
at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1285)
at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1119)
... 31 more
在这三种情况下,我只下载了jdk1.8.0_121-b13和ApacheTomcat 8.5.11,并指出了Tomcat的JAVA_主页(在$CATALINA_HOME/bin/setenv.sh中)以指向我放置JDK的文件夹
具有hibernate依赖项的POM部分:
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId>
<version>5.2.1.Final</version>
</dependency>
<dependency>
<groupId>org.hibernate.javax.persistence</groupId>
<artifactId>hibernate-jpa-2.1-api</artifactId>
<version>1.0.0.Final</version>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-entitymanager</artifactId>
<version>4.3.10.Final</version>
</dependency>
org.hibernate
冬眠核心
5.2.1.最终版本
org.hibernate.javax.persistence
hibernate-jpa-2.1-api
1.0.0.1决赛
org.hibernate
休眠实体管理器
4.3.10.最终版本
您不使用最新版本的所有3个版本的原因是什么?我们刚刚试用了最新的Tomcat v9.0.0.M17-结果相同。Java v1.8.0_121已经是最新版本。我无法更改CentOS的版本(3.10.0-514.2.2.el7.x86_64),因为它是主机还是hibernate版本?我没有应用程序的源代码(只有war),但我将尝试在{application}/WEB-INF/lib中替换hibernate jar,并在这里对结果进行评论。我已将libs更改为hibernate-core-5.2.8.Final.jar和hibernate-entitymanager-5.2.8.Final.jar(hibernate-jpa-2.1-api-1.0.Final已经是最新版本)最后它成功了。war已成功部署到Tomcat v9.0.0.M17中。是的,我指的是JAR。很高兴听到他们成功了。