我用Spring Boot实现了Restful API。当我在带有嵌入式Tomcat服务器的Spring Boot Suite中启动应用程序时,它可以工作。但是,当我尝试将战争部署到Tomcat 7时,出现以下错误:
SEVERE: Exception fixing docBase for context [/cgweb]
java.io.FileNotFoundException: /Users/djiao/Downloads/apache-tomcat-7.0.68/webapps/cgweb/LICENSE (Is a directory)
SEVERE: ContainerBase.addChild: start:
org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].StandardHost[localhost].StandardContext[/cgweb]]
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'entityManagerFactory' defined in class path resource [org/springframework/boot/autoconfigure/orm/jpa/HibernateJpaAutoConfiguration.class]: Invocation of init method failed; nested exception is java.lang.NoSuchMethodError: javax.persistence.JoinColumn.foreignKey()Ljavax/persistence/ForeignKey;
Caused by: java.lang.NoSuchMethodError: javax.persistence.JoinColumn.foreignKey()Ljavax/persistence/ForeignKey;
SEVERE: Error deploying web application archive /Users/djiao/Downloads/apache-tomcat-7.0.68/webapps/cgweb.war
java.lang.IllegalStateException: ContainerBase.addChild: start: org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina
].StandardHost[localhost].StandardContext[/cgweb]]
我知道可能有数百种类似类型的帖子。经过2天的研究,这是导致此问题的主要原因。
我使用Java 7进行了编译,并使用Tomcat 7进行了部署。我确保我为JAVA_HOME设置了jre路径,而不是jdk路径。
我既依赖又删除了2.0。
检查pom的依赖关系层次结构,它们都是4.3.11.Final。
试图在Tomcat Manager UI中进行部署。
这些都不适用于我的情况。尝试了一切,但没有任何效果。由于我使用的是Spring Boot,因此大多数配置都是自动完成的。我没有web.xml。在主Application类之前,我有以下注释。
@SpringBootApplication
@EntityScan({"org.mdacc.rists.cghub.model"})
@EnableJpaRepositories(basePackages = {"org.mdacc.rists.cghub.ws.repository"})
在application.properties中,除了数据源配置外,还有以下几行。
spring.jpa.properties.hibernate.dialect = org.hibernate.dialect.MySQL5Dialect
spring.jpa.hibernate.naming-strategy=org.hibernate.cfg.EJB3NamingStrategy
spring.data.jpa.repositories.enabled=true
还有其他可能导致部署失败的原因吗?
总结一下问题,即使从该项目中删除了jpa 2.0的maven依赖关系,war文件仍具有jpa 2.0和2.1 jar文件。
原因是,jpa 2.0是从另一个项目中选出的,该项目是该项目的依赖项之一。对依赖包进行maven清理(在删除jpa 2.0之后),然后重新构建它就解决了该问题。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句