web-dev-qa-db-ja.com

java.lang.NoClassDefFoundError:org / springframework / context / ApplicationContext

Jsf/spring/hibernateをファラメワークとして使用するプロジェクトのデプロイで問題が発生しました。必要なjar、特にorg.springframework.web-3.1.0.CI-1162を追加しました。エラーは次のとおりです。

SEVERE: Error configuring application listener of class org.springframework.web.context.ContextLoaderListener
Java.lang.NoClassDefFoundError: org/springframework/context/ApplicationContext
    at Java.lang.Class.getDeclaredConstructors0(Native Method)
    at Java.lang.Class.privateGetDeclaredConstructors(Unknown Source)
    at Java.lang.Class.getConstructor0(Unknown Source)
    at Java.lang.Class.newInstance0(Unknown Source)
    at Java.lang.Class.newInstance(Unknown Source)
    at org.Apache.catalina.core.StandardContext.listenerStart(StandardContext.Java:4150)
    at org.Apache.catalina.core.StandardContext.start(StandardContext.Java:4705)
    at org.Apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.Java:799)
    at org.Apache.catalina.core.ContainerBase.addChild(ContainerBase.Java:779)
    at org.Apache.catalina.core.StandardHost.addChild(StandardHost.Java:601)
    at org.Apache.catalina.startup.HostConfig.deployDescriptor(HostConfig.Java:675)
    at org.Apache.catalina.startup.HostConfig.deployDescriptors(HostConfig.Java:601)
    at org.Apache.catalina.startup.HostConfig.deployApps(HostConfig.Java:502)
    at org.Apache.catalina.startup.HostConfig.start(HostConfig.Java:1317)
    at org.Apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.Java:324)
    at org.Apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.Java:142)
    at org.Apache.catalina.core.ContainerBase.start(ContainerBase.Java:1065)
    at org.Apache.catalina.core.StandardHost.start(StandardHost.Java:840)
    at org.Apache.catalina.core.ContainerBase.start(ContainerBase.Java:1057)
    at org.Apache.catalina.core.StandardEngine.start(StandardEngine.Java:463)
    at org.Apache.catalina.core.StandardService.start(StandardService.Java:525)
    at org.Apache.catalina.core.StandardServer.start(StandardServer.Java:754)
    at org.Apache.catalina.startup.Catalina.start(Catalina.Java:595)
    at Sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at Sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    at Sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    at Java.lang.reflect.Method.invoke(Unknown Source)
    at org.Apache.catalina.startup.Bootstrap.start(Bootstrap.Java:289)
    at org.Apache.catalina.startup.Bootstrap.main(Bootstrap.Java:414)

追加されたjarのリスト:

antlr-2.7.6.jar

コモンズ-dbcb-1.4.jar

commons-collections-3.1.jar

commons-pool.1.6.jar

commons-logging-1.1.jar

dom4j-1.6.1.jar

hibernate3.jar

hibernate-jpa-2.0-api-1.0.1.Final.jar

iText-5.0.4.jar(Primefacesの場合)

javassist-3.9.0.GA.jar

com.springsource.org.jboss-el-2.0.0.GA.jar(Tomcat 6で実行する場合はオプション)

jsf-api.jar(Mojarra 2.0.4)

jsf-impl.jar(Mojarra 2.04)

jta-1.1.jar

log4j-1.2.11.jar

mysql-connector-Java-5.0.5.jar(MySQLの場合)

org.springframework.aop-3.1.0.CI-1162.jar

org.springframework.asm-3.1.0.CI-1162.jar

org.springframework.aspects-3.1.0.CI-1162.jar

org.springframework.beans-3.1.0.CI-1162.jar

org.springframework.context-3.1.0.CI-1162.jar

org.springframework.context.support-3.1.0.CI-1162.jar

org.springframework.core-3.1.0.CI-1162.jar

org.springframework.expression-3.1.0.CI-1162.jar

org.springframework.jdbc-3.1.0.CI-1162.jar

org.springframework.orm-3.1.0.CI-1162.jar

org.springframework.oxm-3.1.0.M1.jar

org.springframework.transaction-3.1.0.CI-1162.jar

org.springframework.web-3.1.0.CI-1162.jar

org.springframework.web.portlet-3.1.0.M1.jar

org.springframework.web.servlet-3.1.0.CI-1162.jar

poi-3.2-FINAL-20081019.jar(Primefacesの場合)

primefaces-3.5jar

slf4j-api-1.6.1.jar

slf4j-jdk14-1.6.1.jar

qlfj4-log4j12-1.6.4.jar

7
hela

このエラーには、さまざまな解決策があります。私は私のために働いたものを書き留めました。

ソリューション1。これは、展開およびデバッグ環境で常に発生します。デプロイメント環境では、サーバーのクラスパスにSpring jarライブラリ(例:spring-4.0.4.jar)が含まれていることを確認してください。

デバッグ環境では、手順はIDEによって異なる場合がありますが、解決策は同じです。 Eclipseでは、開発者は通常、Tomcat、jboss…デバッグ用のアプリケーションサーバーを作成しますが、正しいSpringjarが含まれていることを確認してください。

  1. デバッグサーバーをダブルクリックします
  2. 「起動構成を開く」をクリックして、サーバー環境にアクセスします
  3. クラスパスタブをクリックします
  4. ここにSpringjarファイルを含めます。Springの依存関係のために共通のログjarも必要になる場合があります。
  5. 完了したら、アプリケーションを再度実行します。

解決策2。ビルドツールとしてMavenを使用していて、それを使用して依存関係をダウンロードしている場合、jarの競合が発生する可能性があります。 Tomcatサーバーは通常、servlet-apiやjpa-apiなどのいくつかのjarを提供するためです。したがって、Mavenを使用してそれらを再度含めると、それらを識別するのに問題があります。

ソリューション3。 EclipseをIDEとして使用し、ビルドツールとしてMavenを使用し、サーバーとしてTomcatを使用している場合、Tomcatサーバーはjarを参照しないことに注意してください。フォルダーの中にあります。そのために小さなトリックがあります。

  1. projectを右クリックし、properties
  2. 表示されたウィンドウから、Deployment Assemblyを選択します。
  3. 選択追加
  4. 追加Maven依存関係
  5. Applyをクリックし、[〜#〜] ok [〜 #〜]

これらの解決策の1つが問題の解決に役立つことを願っています。ハッピーコーディングとそれがJavaを使用していることを確認してください。

23
KingFeming

私の状況では、Mavenを使用してプロジェクトをビルドしています。warファイルが正しく作成されていないという理由だけで、この例外が発生します。 warファイルを確認し、インストールを再度実行すると、問題が解決します。

1
Mariuszy

すべてのSpringjarを最新バージョン(3.2.2.RELEASE)に置き換えることをお勧めします

0
artbristol

Eclipseを使用していて、Deployment AssemblyにMaven依存関係の構成がないことがわかったので、.classpathをから変更しました。

     <classpathentry kind="con" path="org.Eclipse.m2e.MAVEN2_CLASSPATH_CONTAINER">
       <attributes>
            <attribute name="maven.pomderived" value="true"/>
       </attributes>
     </classpathentry>

     <classpathentry kind="con" path="org.Eclipse.m2e.MAVEN2_CLASSPATH_CONTAINER">
       <attributes>
            <attribute name="maven.pomderived" value="true"/>
            <attribute name="org.Eclipse.jst.component.dependency" value="/WEB-INF/lib"/>
       </attributes>
     </classpathentry>
0
xuhaojin

サーバーのクラスパスにSpringjarライブラリが含まれていることを確認してください。 このリンクを見る

0
proxy

必要なjarファイルをダウンロードする必要があります。次のリンクからspring-context.jarファイルをダウンロードできます。

http://mvnrepository.com/artifact/org.springframework/spring-context/3.2.2.RELEASE

0
olyanren