私はspring 3.1.0.RELEASEを使用しており、サーブレットコンテナはTomcat 7であり、私のIDEはEclipse Indigoですjar spring-webmvc-3.1.0.RELEASE.jarを含むDispatcherServletはlibフォルダーに存在しますが、アプリケーションを実行すると、例外が発生します:
Java.lang.ClassNotFoundException: org.springframework.web.servlet.DispatcherServlet
at org.Apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.Java:1678)
at org.Apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.Java:1523)
at org.Apache.catalina.core.DefaultInstanceManager.loadClass(DefaultInstanceManager.Java:525)
at org.Apache.catalina.core.DefaultInstanceManager.loadClassMaybePrivileged(DefaultInstanceManager.Java:507)
at org.Apache.catalina.core.DefaultInstanceManager.newInstance(DefaultInstanceManager.Java:126)
at org.Apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.Java:1099)
at org.Apache.catalina.core.StandardWrapper.load(StandardWrapper.Java:1043)
at org.Apache.catalina.core.StandardContext.loadOnStartup(StandardContext.Java:4957)
at org.Apache.catalina.core.StandardContext$3.call(StandardContext.Java:5284)
at org.Apache.catalina.core.StandardContext$3.call(StandardContext.Java:5279)
at Java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.Java:303)
at Java.util.concurrent.FutureTask.run(FutureTask.Java:138)
at Java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.Java:886)
at Java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.Java:908)
at Java.lang.Thread.run(Thread.Java:662)
この例外が発生する理由と修正方法をお知らせください。
編集:以下は私の設定ファイルです:
1- .springBeans:
<?xml version="1.0" encoding="UTF-8"?>
<beansProjectDescription>
<version>1</version>
<pluginVersion><![CDATA[2.9.0.201203011806-RELEASE]]></pluginVersion>
<configSuffixes>
<configSuffix><![CDATA[xml]]></configSuffix>
</configSuffixes>
<enableImports><![CDATA[false]]></enableImports>
<configs>
<config>src/main/webapp/WEB-INF/checkout-servlet.xml</config>
</configs>
<configSets>
</configSets>
</beansProjectDescription>
2- web.xml:
<web-app>
<display-name>Checkout</display-name>
<servlet>
<servlet-name>checkout</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>checkout</servlet-name>
<url-pattern>*.action</url-pattern>
</servlet-mapping>
</web-app>
- checkout-servlet.xml:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.1.xsd">
<context:component-scan base-package="com.myapp"/>
<bean id="myService" class="com.myapp.MyService"/>
</beans>
また、アプリケーションのページにアクセスしようとすると、例外が発生します:
HTTP Status 404 - Servlet checkout is not available
type Status report
message Servlet checkout is not available
description The requested resource (Servlet checkout is not available) is not available.
Apache Tomcat/7.0.22
展開アセンブリにエントリがあることがわかりました:
[persisted container] org.maven.ide.Eclipse.maven2_classpath_container
私はそれを削除し、maven dependencies
エントリを追加しましたが、今はうまく動作します。
展開アセンブリに「Maven Dependency」を追加する必要があります
再構築して再度展開する
注:これはnon mavenプロジェクトにも適用されます。
2つの可能な答え:
1- libにspring-beansおよびspring-context jarsを含めませんでした。 Mavenを使用している場合(これは非常に役立ちます)、これらの2行で十分です。
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>3.1.0.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>3.1.0.RELEASE</version>
</dependency>
2-必要なjarはクラスパスにありますが、Tomcatにはデプロイされません。
こんにちは皆さん、Idea IntellijとSpring 4でも同じ問題がありました。問題を修正したので、回答を共有したいと思いました。
Tomcat 7/idea intellij 13/spring 4を使用します
pom.xmlの依存関係
<properties>
<spring.version>4.0.5.RELEASE</spring.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
enter code here
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
<version>${spring.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>1.7.2</version>
</dependency>
<dependency>
<groupId>commons-dbcp</groupId>
<artifactId>commons-dbcp</artifactId>
<version>1.4</version>
</dependency>
</dependencies>
Intellijのアイデアでは、ファイル->プロジェクト設定->アーティファクトに移動する必要があります。それから
クリーン->プロジェクトを再構築->アーティファクトをビルドすると、すべてが正常になります...
これで問題が解決します。簡単で、簡単に説明できます。
ステップ1
ステップ2
ステップ3
ステップ4
ステップ5
これらのアドバイスがすべて機能しない場合は、サーバー(Tomcatなど)を再作成する必要があります。これで私の問題は解決しました。
私は同じ問題に直面していました。ローカルでmavenリポジトリ.m2フォルダー(.... m2\repository\org\springframework\spring-webmvc)を見たとき、2つの3.2.0.RELEASEフォルダーが見つかりました。 SO削除しました。次に、プロジェクトに行き、右クリック->プロパティ->展開essembly-> maven依存関係を追加します。ビルドをクリーンにしてから、サーバーを再起動します。次に、DispatcherServletがロードされました。
Pom.xmlに以下の依存関係を含めます
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>{spring-version}</version>
</dependency>
私の場合、mavenのプロジェクト更新ユーティリティを使用した後にこの問題が発生します。あなたが提案したすべての回避策を試しましたが、何もうまくいかないようでした。最後に、解決策は、サーバーからプロジェクトを削除して、プロジェクトがクリーンであることを確認し、再度追加することでした。それでうまくいきます。このソリューションがあなたの助けになることを願っています。
誰かに役立つかもしれないので、ここに投稿します。 pom.xml
へのこの依存関係がありませんでした
<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>
プロジェクトを右クリックして、プロパティを選択します。 [展開アセンブリ]をクリックします。 [追加]をクリックし、[Javaビルドパスエントリ]をクリックして[Maven依存関係]を選択し、[完了]をクリックします。
WEB-INF-> libフォルダー内にjarを追加するだけの簡単なソリューションを見つけました。
WebSphereでも同じ問題がありましたが、Springの依存関係が存在することを確認し、Tomcatで問題なく実行できたにもかかわらず、解決策が見つかりませんでした。最終的にアプリケーションをアンインストールしてもエラーが発生するため、WebSphereが破損したインスタンスにハングアップしたと考えられます。
問題を解決するには、アプリケーションを再インストールし、停止してからアンインストールしてから再インストールする必要がありました。
私にとっては、pom.xml
の間違いでした-私は依存関係に<scope>provided<scope>
を設定していましたが、これはmvn package
の段階でコピーされないようにしていました。
私の症状は、OPが投稿したエラーメッセージであり、パッケージの実行後に.war内のWEB-INF/libパスにjarが含まれていなかったことです。スコープを削除すると、jarが出力に表示され、すべてが正常にロードされます。
Jarファイルをクラスパスからweb-inf/libに移動し、新しいTomcatサーバーを実行します。
次の手順に従って解決しました。
これにより、プロジェクトの「展開アセンブリ」設定が修正されます。