web-dev-qa-db-ja.com

情報:クラスパスでSpring WebApplicationInitializerタイプが検出されませんでした

EclipseからデプロイするときにTomcat7サーバーで正常に実行されるSpringプロジェクトがあります:Run As >> Run on server。 「Eclipse」タブ「サーバー」に次のように表示されます。

Servers
 Tomcat v7.0 Server at localhost [Started, Synchronized]
   my_project [Synchronized]
     spring-web-3.2.4-RELEASE.jar

私のプロジェクト:

  • はweb.xmlを使用せず、javaconf @アノテーションを使用します。
  • mavenを使用しない、ユーザーライブラリを使用する

プロジェクトは次の場所にあることがわかります。

/srv/applications/workspace/.metadata/.plugins/org.Eclipse.wst.server.core/tmp0

また、次のフォルダーも表示されます:conf、logs、temp、webapps、work、wtpwebapps

Eclipseからデプロイすると、Tomcat7サーバーですべてが正常に実行されることを確認します!

Eclipseコンソールでは次のようになります:

Apr 08, 2014 3:26:59 PM org.Apache.Tomcat.util.digester.SetPropertiesRule begin
WARNING: [SetPropertiesRule]{Server/Service/Engine/Host/Context} Setting property 'source' to 'org.Eclipse.jst.j2ee.server:my_project' did not find a matching property.
Apr 08, 2014 3:27:00 PM org.Apache.coyote.AbstractProtocol init
INFO: Initializing ProtocolHandler ["http-bio-8888"]
Apr 08, 2014 3:27:00 PM org.Apache.coyote.AbstractProtocol init
INFO: Initializing ProtocolHandler ["http-bio-8843"]
Apr 08, 2014 3:27:01 PM org.Apache.catalina.startup.Catalina load
INFO: Initialization processed in 3215 ms
Apr 08, 2014 3:27:01 PM org.Apache.catalina.core.StandardService startInternal
INFO: Starting service Catalina
Apr 08, 2014 3:27:01 PM org.Apache.catalina.core.StandardEngine startInternal
INFO: Starting Servlet Engine: Apache Tomcat/7.0.26
Apr 08, 2014 3:27:11 PM org.Apache.catalina.core.ApplicationContext log
INFO: Spring WebApplicationInitializers detected on classpath: [my_project.web.context.WebApplicationInitializer@3599e94c]
Apr 08, 2014 3:27:12 PM org.Apache.catalina.core.ApplicationContext log
INFO: Initializing Spring root WebApplicationContext
Apr 08, 2014 3:27:24 PM org.Apache.catalina.core.ApplicationContext log
INFO: Initializing Spring FrameworkServlet 'dispatcher'
Apr 08, 2014 3:27:24 PM org.Apache.coyote.AbstractProtocol start
INFO: Starting ProtocolHandler ["http-bio-8888"]
Apr 08, 2014 3:27:24 PM org.Apache.coyote.AbstractProtocol start
INFO: Starting ProtocolHandler ["http-bio-8843"]
Apr 08, 2014 3:27:24 PM org.Apache.catalina.startup.Catalina start
INFO: Server startup in 23821 ms

今:問題は、同じTomcat7サーバー/ var/lib/Tomcat7/webappsに同じファイル(ファイル.warを使用)をデプロイするときです

データなしで最初のページのウェブを開くことができますが、

ログに表示されます:

INFO: No Spring WebApplicationInitializer types detected on classpath

Tomcat7を再起動すると、ログファイルに記録されます。

INFO: Destroying ProtocolHandler ["http-bio-8843"]
Apr 8, 2014 3:25:30 PM org.Apache.Tomcat.util.digester.SetPropertiesRule begin
WARNING: [SetPropertiesRule]{Server/Service/Engine/Host/Context} Setting property 'source' to 'org.Eclipse.jst.j2ee.server:my_project' did not find a matching property.
Apr 8, 2014 3:25:30 PM org.Apache.coyote.AbstractProtocol init
INFO: Initializing ProtocolHandler ["http-bio-8888"]
Apr 8, 2014 3:25:31 PM org.Apache.coyote.AbstractProtocol init
INFO: Initializing ProtocolHandler ["http-bio-8843"]
Apr 8, 2014 3:25:31 PM org.Apache.catalina.startup.Catalina load
INFO: Initialization processed in 1664 ms
Apr 8, 2014 3:25:31 PM org.Apache.catalina.core.StandardService startInternal
INFO: Starting service Catalina
Apr 8, 2014 3:25:31 PM org.Apache.catalina.core.StandardEngine startInternal
INFO: Starting Servlet Engine: Apache Tomcat/7.0.26
Apr 8, 2014 3:25:38 PM org.Apache.coyote.AbstractProtocol start
INFO: Starting ProtocolHandler ["http-bio-8888"]
Apr 8, 2014 3:25:38 PM org.Apache.coyote.AbstractProtocol start
INFO: Starting ProtocolHandler ["http-bio-8843"]
Apr 8, 2014 3:25:38 PM org.Apache.catalina.startup.Catalina start
INFO: Server startup in 7576 ms

エラーが見つかりました:jdk 1.6を使用してビルドされたライブラリがあります。 Springのメインコントローラーとコンポーネントはこのライブラリにあります。また、jdk 1.7の使用方法では、1.6で構築されたクラスが見つかりません。

ソリューションはすべて「コンパイラー準拠レベル:1.7」および「生成された.classファイルの互換性:1.6」、「ソースの互換性:1.6」を使用して構築されました。

Eclipseでこのオプションを設定します:Preferences\Java\Compiler。

みんなありがとう。

私の愚かな理由は:自動的にビルドが無効になった!

4
Anand Rockzz

WebLogicサーバーでSpring Integration Beanを使用してWARをデプロイしているときに、「クラスパスでSpring WebApplicationInitializerタイプが検出されませんでした」という情報メッセージが表示されました。実際、サーブレットURLから404 Not Foundが返され、サーバーログに「No Spring ... etc」というネガティブトーンの情報メッセージが表示されていることを確認できました。ビルドエラーや展開エラー、苦情はありません。実際、beans.xml(スプリングコンテキストXML)は実際にはまったく取り上げられておらず、それはOracleのjDeveloperでの非常に特殊なアーティファクトの編成にバインドされていると思われました。ソリューションは、プロジェクトプロパティの「展開」トピックの下で展開プロファイルを編集するときに、WEB-INF/classesカテゴリの「貢献者」と「フィルター」を慎重に操作することです。

正確には、jDeveloperのデフォルトの「beans.xml」でSpringコンテキストに名前を付け、WEB-INFサブディレクトリ自体に並べて配置することをお勧めします(たとえば、<... your project path>のように、Web Apllicationソースパスの下)/public_html /)。次に、WEB-INF/classesカテゴリ(展開プロファイルの編集時)で、「貢献者」リストのProject HTMLルートディレクトリを確認し、フィルターでbeans.xmlを選択してから、web.xmlがclasspath:beans.xmlのようなcontext-param値。

それが修正された後、私は前進することができ、さらにいくつかのBean構成の変更と実装の後、「クラスパスでSpring WebApplicationInitializerタイプが検出されませんでした」というメッセージが戻ってきました!実際、いつ、なぜそれが正確に戻ったのか気がつきませんでした。この2回目は、

public class HttpGatewayInit implements WebApplicationInitializer { ... }

空の継承されたメソッドを実装し、アプリケーション全体が正常に動作します!

... Java EE開発が、バリアント初期化子のカスケードによって解釈されるXML構成ファイルのカスケード(手動で編集されるもの、ウィザードを使用するものなど)で少しクレイジーになりすぎていると感じたら、ポイントを完全に共有します。

3
berhauz

Log4jが正しく構成されていることを確認します。例外がスローされている可能性がありますが、画面の半分しか表示されていません。

https://stackoverflow.com/a/16817018/1249304 をご覧ください

2
Sabry Shawally

私も同じ問題を抱えていました。私のMavenにはTomcat7プラグインがありましたが、JRE環境は1.6でした。 Tomcat7をTomcat6に変更しましたが、エラーはなくなりました。

1
Akshay

これは一般的なエラーです。file.warが正しくビルドされていることを確認してください。 .warファイルを開いて、WebApplicationInitializerが存在することを確認してください。

0
oleh.kovaliuk

Java7アプリケーションに埋め込まれたTomcat 8でも同様の問題がありました。

アプリケーションでTomcatを起動したとき、それは機能しました。しかし、統合テストの目的でMavenから起動すると、「クラスパスでSpring WebApplicationInitializerタイプが検出されませんでした」というエラーが表示されました。

org.Apache.Tomcat.embed:Tomcat-embed-*依存関係をバージョン8.0.29から8.0.47にアップグレードして修正しました。

0
Antoine