私はこのトピックに関して利用可能なすべての答えを調べました、私は全く異なる問題に直面しているか、または私は何か大きな時間を逃しています。
サービスクラス
package org.test;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;
//http://localhost:8080/JunkWeb/rest/TestRestService/callService
@Path("/TestRestService")
public class TestRestService {
@GET
@Path("/callService")
@Produces(MediaType.TEXT_PLAIN)
public String callService(){return "from Rest Service";}
}//class closing
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" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" version="3.0">
<display-name>JunkWeb</display-name>
<servlet>
<servlet-name>jersey-serlvet</servlet-name>
<servlet-class>com.sun.jersey.spi.container.servlet.ServletContainer</servlet-class>
<init-param>
<param-name>jersey.config.server.provider.packages</param-name>
<param-value>org.test</param-value>
</init-param>
<!-- <init-param>
<param-name>jersey.api.json.POJOMappingFeature</param-name>
<param-value>true</param-value>
</init-param> -->
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>jersey-serlvet</servlet-name>
<url-pattern>/rest/*</url-pattern>
</servlet-mapping>
</web-app>
URL
http://localhost:8080/JunkWeb/rest/TestRestService/callService
動作するはずですが、動作しません。どんな助けでも本当に感謝されるでしょう。
私はJersey 2.17とTomcat 8.0.20を使っています
回答:
回答№1の場合は3「私はJersey 2.17を使用しています」
これは2.17には存在しません
com.sun.jersey.spi.container.servlet.ServletContainer
クラスが見つからないという例外が発生しないことに「私は驚いています」。それはあなたがおそらくバージョンを混在させていることを意味します。それとも、あなたは「私たちに言っていないという例外を受けています。いずれにせよ、正しい ServletContainer
すべきである
org.glassfish.jersey.servlet.ServletContainer
次に、あなたがすべきことがあれば、あなたがすべきことは、そのパッケージがで始まるすべてのもの(jar)を取り除くことです com.sun
。これらはJersey 1 jarです。 Jersey 2では、パッケージの命名パターンはに変更されました。 org.glassfish.xxx
あなたが人生を楽にしたいのなら、Mavenを使って、プロジェクト全体に1つの依存関係を追加するだけで、残りはすべて取り込まれます。
<dependency>
<groupId>org.glassfish.jersey.containers</groupId>
<artifactId>jersey-container-servlet</artifactId>
<version>2.17</version>
</dependency>
また、これはジャージー2にも存在しません
jersey.api.json.POJOMappingFeature
Jersey 2では、このMavenの依存関係を追加するだけで、人生は良くなります。
<dependency>
<groupId>org.glassfish.jersey.media</groupId>
<artifactId>jersey-media-json-jackson</artifactId>
<version>2.17</version>
</dependency>
Mavenを使用していない場合は、RIバンドルをダウンロードしてください。 ここに。すべてのフォルダを開き、プロジェクトにすべてのjarファイルを追加します。これはコアサポート用です。
JSONサポートについては、ダウンロード この、 と同様 これらすべて。あなたはそれらを同じサイトで検索することができます。 これを行うことは追加の設定なしで動作するはずです。あるいは、2番目のリンクにあるものだけをダウンロードしてから、リンクにあるようにweb.xmlにパッケージを追加することもできます。
しかし、それを機能させるためには、コードはJSONを生成または消費しないので、最初にコアを実行させてから、正しく機能し始めたら、JSONサポートに取り組むことができます。