1. ホーム
  2. eclipse

[解決済み] java.lang.ClassNotFoundException: com.sun.jersey.spi.container.servlet.ServletContainer

2022-03-01 12:44:03

質問

私は2日間、Jersey + Google app engineを使用して簡単なhello worldアプリケーションを構築しようとしています。シンプルなAppEngineプロジェクトについては、私はこれらのチュートリアルに従いましたが、両方ともうまく動作します。 https://developers.google.com/appengine/docs/java/gettingstarted/creating https://developers.google.com/appengine/docs/java/webtoolsplatform

しかし、今私はJerseyを追加しようとしており、このチュートリアルに従います。 http://www.vogella.com/articles/REST/article.html .

しかし、サーバーは

java.lang.ClassNotFoundException: com.sun.jersey.spi.container.servlet.ServletContainer

で以下の行を追加すると web.xml :

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
id="WebApp_ID" version="2.5">
<display-name>TestServer</display-name>
<servlet>
    <servlet-name>Jersey REST Service</servlet-name>
    <servlet-class>com.sun.jersey.spi.container.servlet.ServletContainer</servlet-class>
    <init-param>
        <param-name>com.sun.jersey.config.property.packages</param-name>
        <param-value>com.test.myproject</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
    <servlet-name>Jersey REST Service</servlet-name>
    <url-pattern>/rest/*</url-pattern>
</servlet-mapping>
</web-app>

私はジャージーをダウンロードしました JAX-RS 2.1 RI bundle から こちら で、すべてのjarファイルを WEB-INF/lib フォルダーに保存してください。そして2日経っても何も動きません。私はGoogleで何度も検索し、どうやらMavenを使用している人々は何とかそれを解決しましたが、私はMavenを使用していませんし、そのチュートリアルを書いた人もそうでした。

を確認するために com.sun.jersey.spi.container.servlet.ServletContainer は、インポートされた Jersey jars この完全修飾名だけをJavaで書いて、インテリセンスで名前を完成させようとしたのですが、次のようにインテリセンスが出ませんでした。 com.sun.je ということで、私の最後の推測は、これまでいくつかの パッケージの再配置 は、最新のジャージービルドと jersey はもはや com.sun . 疲れ果ててしまいましたが、何卒よろしくお願いいたします。

どのように解決するのですか?

あなたは、JAX-RS 2のRIであるJersey 2をダウンロードしました。あなたが参照しているチュートリアルは、Jersey 1を使用しています。Jersey 1.17.1のダウンロードはこちら( こちら で十分だと思います。

ジャージー1号は com.sun.jersey であり、ジャージ2は org.glassfish.jersey ということで、例外が発生しました。

また init-param で始まる com.sun.jersey はジャージー2で認識されません。

編集

ジャージー島でのリソースとプロバイダの登録 2 には、Jersey 2 でクラス/インスタンスを登録する方法に関する追加情報が含まれています。