web-dev-qa-db-ja.com

重大:ContainerBase.addChild:start:org.Apache.catalina.LifecycleException:開始エラーに失敗しました

Tomcatでアプリケーションを実行しようとしたときに、このエラーが発生しました。 TomcatとJava homeのバージョンをすでに確認しました。両方ともJavaを使用します6。

不足している瓶はありますか?それとも私のウェブXMLですか?私はMavenツールを使用していません。

SEVERE: ContainerBase.addChild: start: 
org.Apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].StandardHost[localhost].StandardContext[/ICard]]
    at org.Apache.catalina.util.LifecycleBase.start(LifecycleBase.Java:154)
    at org.Apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.Java:901)
    at org.Apache.catalina.core.ContainerBase.addChild(ContainerBase.Java:877)
    at org.Apache.catalina.core.StandardHost.addChild(StandardHost.Java:618)
    at org.Apache.catalina.startup.HostConfig.deployDescriptor(HostConfig.Java:650)
    at org.Apache.catalina.startup.HostConfig$DeployDescriptor.run(HostConfig.Java:1582)
    at Java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source)
    at Java.util.concurrent.FutureTask$Sync.innerRun(Unknown Source)
    at Java.util.concurrent.FutureTask.run(Unknown Source)
    at Java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source)
    at Java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
    at Java.lang.Thread.run(Unknown Source)
Caused by: Java.lang.NoClassDefFoundError: javax/xml/rpc/handler/soap/SOAPMessageContext
    at Java.lang.ClassLoader.defineClass1(Native Method)
    at Java.lang.ClassLoader.defineClassCond(Unknown Source)
    at Java.lang.ClassLoader.defineClass(Unknown Source)
    at Java.security.SecureClassLoader.defineClass(Unknown Source)
    at org.Apache.catalina.loader.WebappClassLoader.findClassInternal(WebappClassLoader.Java:2904)
    at org.Apache.catalina.loader.WebappClassLoader.findClass(WebappClassLoader.Java:1173)
    at org.Apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.Java:1681)
    at org.Apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.Java:1559)
    at Java.lang.Class.getDeclaredMethods0(Native Method)
    at Java.lang.Class.privateGetDeclaredMethods(Unknown Source)
    at Java.lang.Class.getDeclaredMethods(Unknown Source)
    at org.Apache.catalina.util.Introspection.getDeclaredMethods(Introspection.Java:108)
    at org.Apache.catalina.startup.WebAnnotationSet.loadMethodsAnnotation(WebAnnotationSet.Java:279)
    at org.Apache.catalina.startup.WebAnnotationSet.loadApplicationServletAnnotations(WebAnnotationSet.Java:141)
    at org.Apache.catalina.startup.WebAnnotationSet.loadApplicationAnnotations(WebAnnotationSet.Java:67)
    at org.Apache.catalina.startup.ContextConfig.applicationAnnotationsConfig(ContextConfig.Java:405)
    at org.Apache.catalina.startup.ContextConfig.configureStart(ContextConfig.Java:881)
    at org.Apache.catalina.startup.ContextConfig.lifecycleEvent(ContextConfig.Java:369)
    at org.Apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.Java:119)
    at org.Apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.Java:90)
    at org.Apache.catalina.core.StandardContext.startInternal(StandardContext.Java:5173)
    at org.Apache.catalina.util.LifecycleBase.start(LifecycleBase.Java:150)
    ... 11 more
Caused by: Java.lang.ClassNotFoundException: javax.xml.rpc.handler.soap.SOAPMessageContext
    at org.Apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.Java:1714)
    at org.Apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.Java:1559)
    ... 33 more
Jan 10, 2014 4:05:06 PM org.Apache.catalina.startup.HostConfig deployDescriptor
SEVERE: Error deploying configuration descriptor F:\RCBC\workspace\.metadata\.plugins\org.Eclipse.wst.server.core\tmp1\conf\Catalina\localhost\ICard.xml
Java.lang.IllegalStateException: ContainerBase.addChild: start: org.Apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].StandardHost[localhost].StandardContext[/ICard]]
    at org.Apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.Java:904)
    at org.Apache.catalina.core.ContainerBase.addChild(ContainerBase.Java:877)
    at org.Apache.catalina.core.StandardHost.addChild(StandardHost.Java:618)
    at org.Apache.catalina.startup.HostConfig.deployDescriptor(HostConfig.Java:650)
    at org.Apache.catalina.startup.HostConfig$DeployDescriptor.run(HostConfig.Java:1582)
    at Java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source)
    at Java.util.concurrent.FutureTask$Sync.innerRun(Unknown Source)
    at Java.util.concurrent.FutureTask.run(Unknown Source)
    at Java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source)
    at Java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
    at Java.lang.Thread.run(Unknown Source)
Jan 10, 2014 4:05:06 PM org.Apache.coyote.AbstractProtocol start
INFO: Starting ProtocolHandler ["http-bio-8100"]
Jan 10, 2014 4:05:06 PM org.Apache.coyote.AbstractProtocol start
INFO: Starting ProtocolHandler ["ajp-bio-8009"]
Jan 10, 2014 4:05:06 PM org.Apache.catalina.startup.Catalina start
INFO: Server startup in 4003 ms
36

この問題の解決策を手に入れました。

  1. Applictionサーバー(Tomcatなど)が、Javaアプリケーションが使用しているものと同じJavaランタイムバージョンを使用していることを確認してください。

  2. ランタイム環境のjdkパスではなくjreパスを使用していることを確認してください

  3. プロジェクトを作成するときは、適切なサーバーランタイムバージョンを選択してください。

20

この問題はさまざまな理由で発生します。 Springブートでビルドされたwarファイルを使用している場合に発生する可能性があります。 SpringブートWebおよび残りのスタータープロジェクトjarにはTomcatが埋め込まれているため、「SEVERE:ContainerBase.addChild:start:org.Apache.catalina.LifecycleException」で失敗します。

Mavenの場合は exclusions を使用して、パッケージ化時に埋め込みTomcatを除外することでこれを修正できます。

「spring-boot-starter-web」のMaven依存関係は次のようになります

   <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
        <exclusions>
            <exclusion>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-Tomcat</artifactId>
            </exclusion>
        </exclusions>
    </dependency>
13
nkharche

私によると、これは同じ名前で、バージョンが異なる2つの違反クラスがある場合に発生します。通常、servlet-api.jarが原因で発生します。戦争のlibフォルダーに存在する場合、plsは戦争の構築に使用されたツールを使用してそれを削除します。または、Mavenの場合、「provided」として指定されたスコープを持つ依存関係を追加します。これにより、コンパイルの問題が解決され、実行時にサーバー環境によって提供されるjarが参照されます。 Plsは、次のように依存関係を構成します。

<dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>javax.servlet-api</artifactId>
        <version>3.0.1</version>
        <scope>provided</scope>
</dependency>
11
Mahesh C.

主な理由:SOAPMessageContext NoClassDefFoundErrorしたがって、このクラスまたはjarをインポートする必要があります

iDEAで

  1. ctrl+shift+alt+S、「ライブラリ」、不在のクラスを見つけます。
  2. ローカルのMaven構成を編集します。

.m2/repository /不在クラス(commons-loggingなど)/.../ maven-metadata-central.xml

<?xml version="1.0" encoding="UTF-8"?>
<metadata modelVersion="1.1.0">
<groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId>
<versioning>
<latest>1.2</latest>
<release>1.2</release>
<versions>
  <version>1.0</version>
  <version>1.0.1</version>
  <version>1.0.2</version>
  <version>1.0.3</version>
  <version>1.0.4</version>
  <version>1.1</version>
  <version>1.1.1</version>
  <version>1.1.2</version>
  <version>1.1.3</version>
  <version>1.2</version>
</versions>
<lastUpdated>20140709195742</lastUpdated>
</versioning>
</metadata>


<latest>your need absend class version and useful</latest>

mavenはプロジェクトの使用バージョンとして「metadata-central.xml」構成の最新バージョンを見つけるためです。

私の中国語の英語を許してください:)

2
fonxian

私の問題は、@WebServlet("/route")と同じサーブレットがweb.xmlで宣言されていることでした

2
Kronen

私の場合、このエラーの原因は、単一のリソースに同じパスを持つ2つの@GETメソッドがあったことです。いずれかのメソッドの@Pathを変更すると解決しました。

2
gabrielkerekes

問題を解決したあなたのケースで何が起こったのかわかりませんが、あなたの問題はこの行にありました:

Caused by: Java.lang.NoClassDefFoundError: javax/xml/rpc/handler/soap/SOAPMessageContext

jaxrpc-api.jar/libsに追加するか、追加する必要があります

<dependency>
    <groupId>javax.xml</groupId>
    <artifactId>jaxrpc-api</artifactId>
    <version>x.x.x</version>
</dependency>

あなたのMaven依存関係に。

0
Nielsvh

私の場合、web.xmlで定義されたサーブレット名は、サーブレットマッピングタグのsevlet名と同じではありませんでした。これを修正し、WARが正常にデプロイされました。

0
Vishnu

「リソースへのアクセスに失敗しました」エラーメッセージに続く同じエラーステートメントがありました。

コマンド

#cat callflow-Java-logger-1.log.0

出力

Dec 09, 2015 8:09:03 AM org.Apache.catalina.loader.WebappLoader startInternal
SEVERE: LifecycleException 
Java.io.IOException: Failed to access resource /WEB-INF/lib/ojdbc14.jar

私の場合、ソリューションはコネクタのアクセス許可を変更していました

-rw------- 1 owner creator size date ojdbc14.jar

問題のこのファイルは、最初は/ WEB-INF/libにありませんでした。これは、おそらくBIRTの動作によるものです。より多くのファイルを処理する場合、注意が必要です。

0
Alan

奇妙なエラー、あなたはジェームズグースリングによって与えられた方法を試すことができ、また私は次の方法でそれをしました:

  • ビルドパスとlibフォルダーからすべてのjarまたはライブラリを削除し、必要に応じてlibフォルダーまたはビルドパスに再度追加します。

  • 特定のサーブレットのサーブレット注釈@WebServletがあるかどうか、またweb.xmlにもマッピングがあるかどうかを確認してください。これは、Tomcatが混乱するために使用する最も一般的なエラーです。

0
swapyonubuntu

私の場合(Spring MVC + Hibernateプロジェクト)、コントローラー、サービス、Dao、モデルクラス、タイムリーフページを追加しました。 「hibernate.cfg.xml」ファイルに新しいモデルクラスをマップしませんでした。そのため、このエラーが発生しました。しかし、新しいモデルクラスをマッピングした後、再びエラーが発生しました。次に、Controller、Service、Dao、Modelクラスを削除しました。タイムリーフページと新しく作成されました。また、新しいモデルクラスをマップしました。その後、エラーが発生しました。

0
Atequer Rahman

私が助けたのは、ターゲットフォルダを削除して、プロジェクトを再コンパイルすることでした。この問題は、サーバーの実行が必要なテストに2番目のサーバーを使用したときに発生しました。結論:warファイルに大きな変更を加えたら、ターゲットファイルを削除します。

0
Jik Huijberts

私の問題は@WebServeletアノテーションにあり、名前が繰り返されたため、コードに誤って@WebServlet("/route")の2つがありました(コピーして貼り付けて、ルート名を変更するのを忘れました)

0
Iman Mirzadeh

.projectファイルと.classpathファイルを確認してください。 Javaバージョンおよびその他の必要な詳細を確認します。それらと欠落または不一致の場合

0
Atul

他のすべてのものに加えて、私にとってこれは、setenv.shでNewRelicをアクティブにしたために発生していました。

NR_JAR=/opt/newrelic/newrelic.jar; export NR_JAR

これをコメントして、newrelicのフックを削除すると、問題はなくなりました。 Apache CXFを使用するエンドポイントでのみ発生していました。

0
Amalgovinus

スプリングブートで作業するときの問題は、Tomcatライブラリを提供するように設定する必要があることでした。

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-Tomcat</artifactId>
    <scope>provided</scope>
</dependency>
0
gischy