2011-12-29 8 views
11

私はシンプルなSpringを通じて簡単なリソースを通じてリクエストを完全にうまく動作させる単純なSpring &ジャージーアプリケーションを持っています。しかし、私はJSON応答を返すことを望みます - オブジェクトのシンプルなJSON直列化を含んでいます。これを達成するために、jersey-jsonの依存関係を追加しました。できるだけ早く私はこの依存関係を追加すると、しかし、私は、サーバーの起動時にこのエラーが出る:ジャージーjersey- *依存関係が追加されている場合、Webアプリケーションプロバイダは存在しません

com.sun.jersey.api.container.ContainerException: No WebApplication provider is present at  
    com.sun.jersey.spi.container.WebApplicationFactory.createWebApplication(WebApplicationFactory.java:69) at 
    com.sun.jersey.spi.container.servlet.ServletContainer.create(ServletContainer.java:391) 

私はプロバイダーです正確に何時に完全に明確ではないんだけど、私は、デフォルトが存在すべきであることをかなり確信しています1つが見つかりました。

は完全を期すために、ここに私のリソースです:

@Path("/scan") 
@Resource 
@Component 
public class ScanResource { 
    @GET 
    @Produces(MediaType.APPLICATION_JSON) 
    @Path("/{barcode}") 
    public List<Scan> getScansForBarcode(@PathParam("barcode") Long barcode){ 
     ..snip.. 
     return results; 
    } 
} 

Aスキャンオブジェクトは、単純なエンティティBeanオブジェクトです。

MVN依存性がある:私はNo WebApplication provider is present例外を取得される可能性がありますなぜ

<dependency> 
    <groupId>com.sun.jersey</groupId> 
    <artifactId>jersey-json</artifactId> 
    <version>1.11</version> 
</dependency> 

誰でも知っていますか?どのように私はそれを解決するかもしれないかについての任意の考えですか?

ありがとうございます。

+0

あなたはあなたが同様にクラスパス上のジャージ・サーバーを持っていることを確信していますか?すべてのジャージーモジュールはまったく同じバージョンでなければならないことを覚えておいてください。この条件が満たされていない場合、プロバイダはお互いを見つけることができません。 –

+0

ありがとうパベル - このコメントを回答にして、私はそれを受け入れるでしょう。 – idbentley

+0

完了、ありがとう! :) –

答えて

23

クラスパスにもjersey-server jarが必要です。また、すべてのjarファイルが同じバージョンのJarファイルであることを確認する必要がある場合、Jerseyランタイムはそれ以外の場合はクラスを使用できません。

さらに、モジュール構造に最近の変更があります(サーブレットの依存関係は新しいモジュールに分割されていました)。したがって、サーブレットを使用している場合は、jersey-servlet(ジャージー・サーバーに依存します)に依存することができます。

+2

ありがとう!私はこれをjsonクライアントを含む依存関係を追加したときに破損したneo4jサーバーに埋め込んでいました。例えば、 - http://lists.neo4j.org/pipermail/user/2011-November/013368.html – Stewart

+0

さらに、jersey-servlet 1.17も同じ問題を引き起こします。代わりに1.17.1を使用してください。 –

6

私もこの問題を抱えています。この問題は、 "jersey-json"と "jersey-servlet"の依存関係と同じバージョンを持つことで解決されました。

EX:

<dependency> 
    <groupId>com.sun.jersey</groupId> 
    <artifactId>jersey-json</artifactId> 
    <version>1.13</version> 
</dependency> 
<dependency> 
    <groupId>com.sun.jersey</groupId> 
    <artifactId>jersey-servlet</artifactId> 
    <version>1.13</version> 
</dependency> 
+0

jersey-servletを使用するだけで十分でした.Jersey-jsonは必要ありません。 – Tires

関連する問題