2016-04-04 51 views
0

Spring Bootで安らかなAPIを実装しました。これは、Tomcatサーバーが組み込まれたSpring Boot Suite内でアプリケーションを起動するときに機能します。LifecycleException:Tomcatでwarを展開するコンポーネントの起動に失敗しました

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]] 

私はポストの同様のタイプの何百ものは、おそらくそこにいることを知っている:私は、Tomcatの7に戦争を展開しようとしたときしかし、私は次のエラーを得ました。私が2日間以上研究した後は、このような問題の大きな原因があります。

  1. Tomcatのバージョンがjavaコンパイラのバージョンと一致しません。

私はJava 7でコンパイルし、展開のためにTomcat 7を使用しました。私はjdkパスではなくJAVA_HOMEのjreパスを設定したことを確認しました。

  1. jpa 2.0と2.1の間の競合(外部キーエラーに関連する)。

私は自分の依存関係にあり、2.0を削除しました。

  1. hibernate-entitymangerとhibernate-coreのバージョンが一致しません。

pomの依存関係階層をチェックしたところ、どちらも4.3.11.最終的です。

  1. warをwebappフォルダに手動でコピーして展開します。

Tomcat ManagerのUIにデプロイしようとしました。

これらのどれも私のケースには適用されません。すべてを試したが、何も働かなかった。私はSpring Bootを使っているので、ほとんどの設定は自動的に行われました。私はweb.xmlを持っていません。メインアプリケーションクラスの前に次の注釈があります。

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 

展開に失敗する可能性があるその他の理由はありますか。

+1

tomcatサーバーのlibディレクトリまたはcommonディレクトリに、WEB-INF/libでパッケージ化したものよりも優先順位が高い、hibernateまたはJPA関連のjarファイルがあるかどうかを確認してください。そして、ちょうどきれいなビルドを行い、tomcat作業ディレクトリをきれいにして再起動するだけです。 –

+2

残念ですが、_java.lang.NoSuchMethodError:javax.persistence.JoinColumn.foreignKey()Ljavax/persistence/ForeignKey_という意味は1つしかありません。実行時にCLASSPATHにJPA API v2.0 jarがあります。まだ。したがって、ランタイムsystem.classpathを出力してください。 –

+2

Tomcatを '-verbose:class'で実行してみてください。 JPA 2のどこに表示されますか。0クラスがロードされています –

答えて

1

この問題を要約すると、このプロジェクトからjpa 2.0の依存関係を削除した後でも、warファイルにはjpa 2.0と2.1 jarファイルの両方があります。

理由は、このプロジェクトの依存関係の1つである別のプロジェクトからjpa 2.0が選択されたためです。その依存パッケージのmaven clean(jpa 2.0を削除した後)をやり直し、再度ビルドすると問題が解決しました。

関連する問題