springboot JPA项目部署JBOSS出错
2017-12-15 09:49
821 查看
springboot 1.5.9.RELEASE,项目用到JPA,部署到EPA6.4 JBOSS时出现
Caused by: java.lang.NoSuchMethodError: javax.persistence.Table.indexes()[Ljavax/persistence/Index;
查询得知是jar包版本不同引起的错误导致部署失败。
在idea编辑器中,打开Terminal输入mvn dependency:tree 查看项目引用的jar包。
发现引用的是org.hibernate.javax.persistence:hibernate-jpa-2.1-api:jar:1.0.0.Final
但是安装的JBOSS6.4版本用的是org.hibernate.javax.persistence:hibernate-jpa-2.0-api:jar:1.0.0.Final版本。
由此得到造成该bug的原因是自己引用的jar和容器自己引用的jar版本冲突造成。
解决方案如下:
在springboot项目中,添加webapp/WEN-INF/目录,在该目录下添加jboss-deployment-structure.xml,xml内容如下。
项目结构图如下
Caused by: java.lang.NoSuchMethodError: javax.persistence.Table.indexes()[Ljavax/persistence/Index;
Caused by: java.lang.NoSuchMethodError: javax.persistence.Table.indexes()[Ljavax/persistence/Index; at org.hibernate.cfg.annotations.EntityBinder.processComplementaryTableDefinitions(EntityBinder.java:1100) [hibernate-core-5.0.12.Final.jar:5.0.12.Final] at org.hibernate.cfg.AnnotationBinder.bindClass(AnnotationBinder.java:772) [hibernate-core-5.0.12.Final.jar:5.0.12.Final] at org.hibernate.boot.model.source.internal.annotations.AnnotationMetadataSourceProcessorImpl.processEntityHierarchies(AnnotationMetadataSourceProcessorImpl.java:245) [hibernate-core-5.0.12.Final.jar:5.0.12.Final] at org.hibernate.boot.model.process.spi.MetadataBuildingProcess$1.processEntityHierarchies(MetadataBuildingProcess.java:222) [hibernate-core-5.0.12.Final.jar:5.0.12.Final] at org.hibernate.boot.model.process.spi.MetadataBuildingProcess.complete(MetadataBuildingProcess.java:265) [hibernate-core-5.0.12.Final.jar:5.0.12.Final] at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.metadata(EntityManagerFactoryBuilderImpl.java:847) [hibernate-entitymanager-5.0.12.Final.jar:5.0.12.Final] at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.build(EntityManagerFactoryBuilderImpl.java:874) [hibernate-entitymanager-5.0.12.Final.jar:5.0.12.Final] at org.springframework.orm.jpa.vendor.SpringHibernateJpaPersistenceProvider.createContainerEntityManagerFactory(SpringHibernateJpaPersistenceProvider.java:60) [spring-orm-4.3.13.RELEASE.jar:4.3.13.RELEASE] at org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean.createNativeEntityManagerFactory(LocalContainerEntityManagerFactoryBean.java:360) [spring-orm-4.3.13.RELEASE.jar:4.3.13.RELEASE] at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.buildNativeEntityManagerFactory(AbstractEntityManagerFactoryBean.java:382) [spring-orm-4.3.13.RELEASE.jar:4.3.13.RELEASE] at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.afterPropertiesSet(AbstractEntityManagerFactoryBean.java:371) [spring-orm-4.3.13.RELEASE.jar:4.3.13.RELEASE] at org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean.afterPropertiesSet(LocalContainerEntityManagerFactoryBean.java:336) [spring-orm-4.3.13.RELEASE.jar:4.3.13.RELEASE] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1687) [spring-beans-4.3.13.RELEASE.jar:4.3.13.RELEASE] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1624) [spring-beans-4.3.13.RELEASE.jar:4.3.13.RELEASE] ... 29 more
查询得知是jar包版本不同引起的错误导致部署失败。
在idea编辑器中,打开Terminal输入mvn dependency:tree 查看项目引用的jar包。
发现引用的是org.hibernate.javax.persistence:hibernate-jpa-2.1-api:jar:1.0.0.Final
但是安装的JBOSS6.4版本用的是org.hibernate.javax.persistence:hibernate-jpa-2.0-api:jar:1.0.0.Final版本。
由此得到造成该bug的原因是自己引用的jar和容器自己引用的jar版本冲突造成。
解决方案如下:
在springboot项目中,添加webapp/WEN-INF/目录,在该目录下添加jboss-deployment-structure.xml,xml内容如下。
项目结构图如下
在该目录下添加jboss-deployment-structure.xml,xml内容如下。
<?xml version="1.0" encoding="UTF-8"?> <jboss-deployment-structure> <deployment> <exclude-subsystems> <subsystem name="jpa" /> </exclude-subsystems> <exclusions> <module name="org.jboss.logging" /> <module name="javaee.api" /> <module name="javax.persistence.api" /> <module name="org.hibernate" /> <module name="org.slf4j" /> <module name="org.slf4j.impl" /> <module name="org.slf4j.jcl-over-slf4j" /> </exclusions> </deployment> </jboss-deployment-structure>
相关文章推荐
- springboot项目部署JBOSS成功但访问404
- Spring-Boot项目部署到单独tomcat运行
- Springboot项目部署到外部Tomcat
- 技术文章 | spring boot项目中使用jpa的一个未解之谜
- jboss-as-7.1.1 开发部署spring springmvc项目
- 从零一起学Spring Boot之LayIM项目长成记(四) Spring Boot JPA 深入了解
- Tomcat 部署 Spring Boot 项目 报错 404
- spring boot + vue + element-ui全栈开发入门——项目部署
- spring boot项目中使用spring-boot-devtools模块进行代码热部署,避免重新启动web项目
- spring boot项目中使用spring-boot-devtools模块进行代码热部署,避免重新启动web项目
- spring-boot项目(idea工具)热部署(亲测有效)
- 使用Docker部署Spring boot项目
- 项目出错Spring Boot java.lang.NoClassDefFoundError: javax/servlet/Filter
- spring-boot 项目修改后自动部署
- SpringBoot项目在IntelliJ IDEA中实现热部署
- Spring boot项目部署
- spring boot项目热部署
- SpringBoot项目在IntelliJ IDEA中实现热部署
- [置顶] spring boot项目实战:JPA
- [置顶] spring boot项目实战:JPA