9

eclipse wiki で説明されているとおりに、 「 Jettyと Maven を使用した標準 WebApp」を作成するための指示に従いました

ただし、webapp (mvn jetty:run) を実行して localhost:8080/hello-world/hello に移動すると、「/hello-world/hello へのアクセス中に HTTP ERROR 404 問題が発生しました。理由: 見つかりません」というメッセージが表示されます。ドキュメントを読み、wiki ページの履歴を調べ、他のフォーラムやスタックオーバーフロー スレッドを調べましたが、この一見単純な問題に対する答えが見つかりません。ソースを掲載しますが、文字通りチュートリアルと同じです。

どんな助けでも大歓迎です。私は本当にこのテクノロジーをいじってみたいと思っていますが、同じ行き止まりにぶつかり続けるのはがっかりです.

(注: 「JettyMavenHelloWorld」を作成するためのチュートリアルの最初の部分は正常に機能します。私の問題は、2 番目の部分「JettyMavenHelloWarApp」にあります。このセクションのタイトルは「Jetty と Maven を使用した標準 Web アプリケーションの開発」です)

JettyMavenHelloWarApp/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>org.example</groupId>
  <artifactId>hello-world</artifactId>
  <version>0.1-SNAPSHOT</version>
  <packaging>jar</packaging>
  <name>Jetty HelloWorld</name>

  <properties>
    <jettyVersion>7.2.0.v20101020</jettyVersion>
  </properties>

  <dependencies>
    <dependency>
      <groupId>org.eclipse.jetty</groupId>
      <artifactId>jetty-server</artifactId>
      <version>${jettyVersion}</version>
    </dependency>
  </dependencies>

  <build>
    <plugins>
      <plugin>
        <!-- This plugin is needed for the servlet example -->
        <groupId>org.mortbay.jetty</groupId>
        <artifactId>jetty-maven-plugin</artifactId>
        <version>${jettyVersion}</version>
      </plugin>
      <plugin>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>exec-maven-plugin</artifactId>
        <version>1.1</version>
        <executions>
          <execution><goals><goal>java</goal></goals></execution>
        </executions>
        <configuration>
          <mainClass>org.example.HelloWorld</mainClass>
        </configuration>
      </plugin>
    </plugins>
  </build>
</project>

JettyMavenHelloWarApp/src/main/java/org/example/HelloServlet.java

package org.example;

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

public class HelloServlet extends HttpServlet
{
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
    {
        response.setContentType("text/html");
        response.setStatus(HttpServletResponse.SC_OK);
        response.getWriter().println("<h1>Hello Servlet</h1>");
        response.getWriter().println("session=" + request.getSession(true).getId());
    }
}

JettyMavenHelloWarApp/src/main/webapp/WEB-INF/web.xml

<?xml version="1.0" encoding="ISO-8859-1"?>
<web-app 
   xmlns="http://java.sun.com/xml/ns/javaee" 
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" 
   version="2.5">
  <servlet>
    <servlet-name>Hello</servlet-name>
    <servlet-class>org.example.HelloServlet</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>Hello</servlet-name>
    <url-pattern>/hello/*</url-pattern>
  </servlet-mapping>
</web-app>

JettyMavenHelloWarApp/src/main/webapp/index.html

<h1>Hello World Webapp</h1>
<a href="/hello">Hello Servlet</a>
4

6 に答える 6

12

チュートリアルでは、間違った URL が提供されます。アプリ コンテキストはまだ「/」であるため、静的コンテンツと動的コンテンツの URL はそれぞれ と ですhttp://localhost:8080http://localhost:8080/hello

Maven jetty プラグインのドキュメントでは、デフォルトのコンテキストが pom.xml の artifactId と同じ名前になると主張していますが、ここでは機能していないようです。

于 2012-09-16T22:35:02.457 に答える
3

私は同じ問題に遭遇しましたが、私にとってうまくいったのは、次のようなアプリにアクセスすることでした:http://localhost:8080/hello/index.jspまたはhttp://localhost:8080/hello/index.html、htmlまたはjsページを使用しているものは何でも。

于 2015-01-22T18:03:54.447 に答える
0

mvn packageその前にタスクを実行しないと思うのでmvn jetty:run、jetty にはソースが表示されません。mvn package最初に実行するだけです。

于 2016-08-10T18:36:39.597 に答える