92

私はspring 3.1.0.RELEASEを使用しており、私のサーブレット コンテナーはtomcat 7であり、私の IDE はeclipse indigoであり、 DispatcherServletを含む jar spring-webmvc-3.1.0.RELEASE.jar が 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>

3-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
4

18 に答える 18

257

展開アセンブリに「Maven Dependency」を追加する必要があります

  • プロジェクトを右クリックしてプロパティを選択します。
  • 展開アセンブリをクリックします。
  • 追加をクリック
  • 「Java ビルド パス エントリ」をクリックします。
  • Maven依存関係を選択してください」
  • [完了] をクリックします。

再構築して再度デプロイする

注: これは非 Mavenプロジェクトにも適用されます。

于 2012-10-16T08:53:38.720 に答える
34

考えられる答えは 2 つあります。

1- lib に spring-beans と spring-context jar を含めませんでした。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 にデプロイされていません。

于 2012-06-27T21:49:27.610 に答える
19

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>

idea Intellij では、File -> Project Settings -> Artifacts に移動する必要があります。

それで ここに画像の説明を入力

クリーン -> プロジェクトを再構築 -> アーティファクトをビルドすれば、すべて問題ありません。

于 2014-07-05T11:35:43.920 に答える
13

これで問題は解決します。それは簡単で、かなり簡単に説明されています。

ステップ1

  • プロジェクトを右クリック
  • [プロパティ] をクリックします。

ステップ2

  • の [展開アセンブリ] タブをクリックします。
  • [追加...] をクリックします。

ステップ 3

  • Java ビルド パス エントリをクリックします。

ステップ 4

  • Maven依存関係をクリックします
  • [完了] ボタンをクリックします

ステップ 5

  • Spring MVC アプリケーションを再度 Tomcat に再デプロイする
  • Tomcat を再起動する
  • リスト項目

クラスが見つかりません例外

于 2018-06-03T09:39:41.627 に答える
11

展開アセンブリに次のエントリがあることがわかりました。

[persisted container] org.maven.ide.eclipse.maven2_classpath_container

私はそれを削除し、maven dependenciesエントリを追加しましたが、現在は正常に動作しています。

于 2012-06-28T08:54:54.213 に答える
5

以下の依存関係を pom.xml に含めます

<dependency>
 <groupId>org.springframework</groupId>
  <artifactId>spring-webmvc</artifactId>
   <version>{spring-version}</version>
</dependency>
于 2015-12-30T16:44:27.810 に答える
4

私は同じ問題に直面していました。ローカルで maven リポジトリ .m2 フォルダー (....m2\repository\org\springframework\spring-webmvc) を見たところ、2 つの 3.2.0.RELEASE フォルダーが見つかりました。だから私は1つを削除しました。次に、プロジェクトに移動し、右クリック->プロパティ->デプロイメント essembly-> maven 依存関係を追加します。ビルドをクリーンアップしてから、サーバーを再起動します。次に、DispatcherServlet がロードされました。

于 2015-01-29T13:42:49.990 に答える
3
  1. 作業中のプロジェクトのプロパティに移動します
  2. Deployment Assemblyメニューを選択し、追加ボタンをクリックします。
  3. Java Build Path Entriesを選択し、 Maven Dependenciesをクリックします。
  4. プロジェクトをビルドして実行する

ここに画像の説明を入力

于 2019-11-13T13:30:35.123 に答える
2

私の場合、maven の update project ユーティリティを使用した後にこの問題が発生します。あなたが提案したすべての回避策を試しましたが、何もうまくいかないようでした。最終的な解決策は、サーバーからプロジェクトを削除してクリーンであることを確認し、再度追加することでした。その後、うまくいきます。このソリューションがあなたの助けになることを願っています。

于 2013-11-02T09:46:35.040 に答える
1

プロジェクトを右クリックしてプロパティを選択します。展開アセンブリをクリックします。「Java Build Path Entries」をクリックして「Maven Dependencies」を選択し、「Finish」をクリックします。

于 2016-06-12T19:05:23.277 に答える
0

簡単な解決策を見つけました.jarをWEB-INF--> libフォルダー内に追加するだけです..

于 2017-02-01T04:37:01.483 に答える
0

jar ファイルをクラスパスからweb-inf/libに移動し、新しい tomcat サーバーを実行します。

于 2016-02-24T17:56:29.980 に答える