2016-11-22 1 views
2

を取得:、私は次のコマンドを使用して、サンプルのMavenプロジェクトを作成したクラスが見つからない例外

MVN原型:生成-DgroupId = com.rohit -DartifactId = RohitLoginApp -DarchetypeArtifactId =のmaven-原型を-webapp -DinteractiveMode = falseを

以下

日食にプロジェクト構造の画像リンクです:

Maven project structure in eclipse

のpom.xml

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> 
    <modelVersion>4.0.0</modelVersion> 
    <groupId>com.rohit</groupId> 
    <artifactId>RohitLoginApp</artifactId> 
    <packaging>war</packaging> 
    <version>1.0-SNAPSHOT</version> 
    <name>RohitLoginApp Maven Webapp</name> 
    <url>http://maven.apache.org</url> 
    <dependencies> 
    <dependency> 
     <groupId>javax.servlet</groupId> 
     <artifactId>javax.servlet-api</artifactId> 
     <version>3.0.1</version> 
     <scope>provided</scope> 
    </dependency> 
    <dependency> 
     <groupId>junit</groupId> 
     <artifactId>junit</artifactId> 
     <version>3.8.1</version> 
     <scope>test</scope> 
    </dependency> 
    </dependencies> 
    <build> 
    <finalName>RohitLoginApp</finalName> 
    </build> 
</project> 

のweb.xml:

<!DOCTYPE web-app PUBLIC 
"-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" 
"http://java.sun.com/dtd/web-app_2_3.dtd" > 

<web-app> 
    <display-name>Archetype Created Web Application</display-name> 
    <servlet> 
    <servlet-name>RohitTestServlet</servlet-name> 
    <display-name>RohitTestServlet</display-name> 
    <description></description> 
    <servlet-class>com.company.rohit.RohitTestServlet</servlet-class> 
    </servlet> 
    <servlet-mapping> 
    <servlet-name>RohitTestServlet</servlet-name> 
    <url-pattern>/RohitTestServlet</url-pattern> 
    </servlet-mapping> 
</web-app> 

RohitTestServlet.java

package com.company.rohit; 

import java.io.IOException; 
import javax.servlet.ServletException; 
import javax.servlet.http.HttpServlet; 
import javax.servlet.http.HttpServletRequest; 
import javax.servlet.http.HttpServletResponse; 

/** 
* Servlet implementation class RohitTestServlet 
*/ 
public class RohitTestServlet extends HttpServlet { 
    private static final long serialVersionUID = 1L; 

    /** 
    * @see HttpServlet#HttpServlet() 
    */ 
    public RohitTestServlet() { 
     super(); 
     // TODO Auto-generated constructor stub 
    } 

    /** 
    * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response) 
    */ 
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 
     // TODO Auto-generated method stub 
     String userId = request.getParametker("userName"); 
     String pwd = request.getParametker("psw"); 
     response.getWriter().write("User ID and password are received"); 
    } 

    /** 
    * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response) 
    */ 
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 
     // TODO Auto-generated method stub 
    } 

} 

index.jspを

<html> 
<body> 
<h2>Login Page</h2> 
<form action="RohitTestServlet"> 
    User Name<br> 
    <input type="text" name="userName"> 
    <br> 
    Password<br> 
    <input type="password" name="psw"> 
    <br><br> 
    <input type="submit" value="Submit"> 
</form> 
</body> 
</html> 

このアプリケーションをtomcatにデプロイすると、最初にユーザーIDとパスワードを入力して[送信]ボタンをクリックするような開始画面がロードされます。サーブレットのURL、つまりhttp://localhost:8080/RohitLoginApp/RohitTestServlet?userName= "xyz" & psw = "www"にリダイレクトします。しかし、サーブレットにヒットして応答を得ることができません。以下は、エラーは次のとおりです。

SEVERE:RohitTestServletサーブレットのために例外を割り当て にjava.lang.ClassNotFoundException:org.apache.catalina.loader.WebappClassLoaderBase.loadClassでcom.company.rohit.RohitTestServlet (WebappClassLoaderBase.java:1856 ) at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1705) at org.apache.catalina.core.DefaultInstanceManager.loadClass(DefaultInstanceManager.java:506) at org.apache.catalina.core .DefaultInstanceManager.loadClassMaybePrivileged(DefaultInstanceManager.java:488) at org.apache.catalina.core.DefaultInstanceManager.newInstance(DefaultInstanceManager.java:115) at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1148) at org.apache.catalina.core.StandardWrapper.allocate(StandardWrapper.java:864) at org.apache.catalina.core。スタンダード・ウォーター・バリアント.invoke(StandardWrapperValve.java:134) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122) at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:505) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:169) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103) at org.apache.catalina.valves。 AccessLogValve.invoke(AccessLogValve.java:956) at org.apache.catalina.core.StandardEngineValve.invo org(org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1079))の at org.apache.coyote.AbstractProtocol $ AbstractConnectionHandler.process(AbstractProtocol.java:625) at org.apache.tomcat.util.net.JIoEndpoint $ SocketProcessor.run(JIoEndpoint.java:318) at java.util.concurrent。 ThreadPoolExecutor。runWorker(ThreadPoolExecutor.java:1145) at java.util.concurrent.ThreadPoolExecutor $ Worker.run(ThreadPoolExecutor.java:615) at org.apache.tomcat.util.threads.TaskThread $ WrappingRunnable.run(TaskThread.java: 61) at java.lang.Thread.run(Thread.java:745)

クラスをロードできません。私はきれいに多くの時間を構築したが、まだサーブレットをロードすることができませんでした。

+0

あなたは 'request.getParameterker()'にタイプミスがあります – Krzysiek

+0

パッケージエクスプローラでプロジェクトを右クリックし、Maven - > Update Project(Alt + F5)を選択しましたか? 次に、[サーバー]タブに移動し、Tomcatインスタンスを展開してそこからプロジェクトを削除します。その後、次のように実行してください。 - >サーバで実行 – Krzysiek

答えて

0

あなたのクラスがwarファイルにコンパイルされていないようです。サーブレットクラスがsrc/main/javaに適切なパッケージサブフォルダで定義されていることを確認する必要があります。これを確認するには、webappsディレクトリに移動し、 "classes"フォルダを参照してクラスがあるかどうかを確認します。

+0

応答に感謝します。あなたが言ったのは儀式です。私がmavenのarchtypeを "maven-archetype-webapp"と指定したとき、私はmavenが適切なフォルダ構造を作成すると考えました。それは本当ですか? – RRN

+0

イメージからサーブレットクラスを "src/main/java"ではなく "src/main/resources"に定義しました。 "src/main/resources"は、プロパティファイルなどの静的リソース用です。戦争を構築するときには、javaコンパイラによってコンパイルされるために、すべてのコードを "src/main/java"の下に置く必要があります。 – GameSalutes

+0

ok。しかし、私のプロジェクトにはsrc/main/javaというフォルダはありません。だから私は1つを作成する必要がありますか? – RRN

関連する問題