web-dev-qa-db-ja.com

ResourceConfigインスタンスにルートリソースクラスが含まれていません

ここで何が問題になっていますか?

The ResourceConfig instance does not contain any root resource classes.
Dec 10, 2010 10:21:24 AM com.Sun.jersey.spi.spring.container.servlet.SpringServlet initiate
SEVERE: Exception occurred when intialization
com.Sun.jersey.api.container.ContainerException: The ResourceConfig instance does not contain any root resource classes.
        at com.Sun.jersey.server.impl.application.RootResourceUriRules.<init>(RootResourceUriRules.Java:103)
        at com.Sun.jersey.server.impl.application.WebApplicationImpl._initiate(WebApplicationImpl.Java:1182)
        at com.Sun.jersey.server.impl.application.WebApplicationImpl.access$600(WebApplicationImpl.Java:161)
        at com.Sun.jersey.server.impl.application.WebApplicationImpl$12.f(WebApplicationImpl.Java:698)
        at com.Sun.jersey.server.impl.application.WebApplicationImpl$12.f(WebApplicationImpl.Java:695)
        at com.Sun.jersey.spi.inject.Errors.processWithErrors(Errors.Java:197)
        at com.Sun.jersey.server.impl.application.WebApplicationImpl.initiate(WebApplicationImpl.Java:695)
        at com.Sun.jersey.spi.spring.container.servlet.SpringServlet.initiate(SpringServlet.Java:117)

フィルタ:

<filter>
    <filter-name>JerseyFilter</filter-name>
    <filter-class>com.Sun.jersey.spi.spring.container.servlet.SpringServlet</filter-class>

    <init-param>
        <param-name>com.Sun.jersey.config.feature.Redirect</param-name>
        <param-value>true</param-value>
    </init-param>

    <init-param>
        <param-name>com.Sun.jersey.config.property.JSPTemplatesBasePath</param-name>
        <param-value>/views/</param-value>
    </init-param>

    <init-param>
        <param-name>com.Sun.jersey.config.property.WebPageContentRegex</param-name>
        <param-value>/(images|css|jsp)/.*</param-value>
    </init-param>
</filter>

<filter-mapping>
    <filter-name>JerseyFilter</filter-name>
    <url-pattern>/myresource/*</url-pattern>
</filter-mapping>

コード:

@Path ("/admin")
public class AdminUiResource {

  @GET
  @Produces ("text/html")
  @Path ("/singup")
  public Viewable getSignUp () {
    return new Viewable("/public/signup", "Test");
  }
}
78
cmani

基本的に私は以下のようにそれを修正し、すべてがうまくいきました。

<servlet>
    <servlet-name >MyWebApplication</servlet-name>
    <servlet-class>com.Sun.jersey.spi.container.servlet.ServletContainer</servlet-class>
    <init-param>
        <param-name>com.Sun.jersey.config.feature.Redirect</param-name>
        <param-value>true</param-value>
    </init-param>
    <init-param>
        <param-name>com.Sun.jersey.config.property.JSPTemplatesBasePath</param-name>
        <param-value>/views/</param-value>
    </init-param>
    <init-param>
        <param-name>com.Sun.jersey.config.property.WebPageContentRegex</param-name>
        <param-value>/(images|css|jsp)/.*</param-value>
    </init-param>
</servlet>

<servlet-mapping>
    <servlet-name>MyWebApplication</servlet-name>
    <url-pattern>/myapp/*</url-pattern>
</servlet-mapping>
9
cmani

追加してみましたか

<init-param>
  <param-name>com.Sun.jersey.config.property.packages</param-name>
  <param-value>my.package.name</param-value>
</init-param>

springServletの定義に?明らかに、my.package.nameをAdminUiResourceが含まれているパッケージに置き換えて、クラスパスにあることを確認してください。

80
Mike

私はジャージーを初めて使いました。同じ問題がありましたが、「/」を削除して@path( "admin")を使用しただけで機能しました。

@Path("admin")
public class AdminUiResource { ... }
31
Anver Sadhat

つまり、ジャージRESTful Webサービスとして実行できるクラスが見つかりませんでした。

小切手:

  • 'com.Sun.jersey.config.property.packages'がweb.xmlにないかどうか。
  • 'com.Sun.jersey.config.property.packages'パラメーターの値が欠落しているか無効であるか(言及されたパッケージが存在しない)。これは、ジャージサービスとして実行されるPOJOクラスを配置したパッケージである必要があります。
  • @Path属性のアノテーションが付けられたメソッドを持つPOJOクラスが少なくとも1つ存在するかどうか。
28
Pawan

でパッケージ名を追加する必要があります

<init-param>
  <param-name>com.Sun.jersey.config.property.packages</param-name>
  <param-value>your.package.name</param-value>
</init-param>

また、私が気づいた1つのこと、
MAVEN BUILDの後にプロジェクトを更新する必要があります。それ以外の場合は、同じエラーが表示されます。
プロジェクトを更新する必要がある理由を知っている場合はコメントしてください。

27
VdeX

リソースパッケージには、@ Pathアノテーションが付いているか、@ Pathまたは@ GET、@ PUT、@ POST、@ DELETEなどのリクエストメソッド指定子がアノテーションされているメソッドを少なくとも1つ持つ少なくとも1つのpojoを含める必要があります。リソースメソッドは、要求メソッド指定子で注釈が付けられたリソースクラスのメソッドです。これで問題が解決しました。

12
hakish

JBOSS EAP 6.1でこの問題に遭遇しました。 Eclipseを介してJBOSSサーバーにコードをデプロイできましたが、ファイルをWARファイルとしてJBOSSにデプロイしようとすると、このエラーが発生し始めました。

ソリューションは、web.xmlがJBOSSで適切に機能するように設定することで、2つを連携させることでした。

次の2行はweb.xmlでコメントアウトされており、JBOSSが独自の設定を行えるようになっています。

<!--  
    <init-param>
    <param-name>com.Sun.jersey.config.property.packages</param-name>
    <param-value>com.your.package</param-value>
</init-param> -->

そして、次のコンテキストパラメータを追加します

<context-param>
    <param-name>resteasy.scan</param-name>
    <param-value>false</param-value>
</context-param>
<context-param>
    <param-name>resteasy.scan.resources</param-name>
    <param-value>false</param-value>
</context-param>
<context-param>
    <param-name>resteasy.scan.providers</param-name>
    <param-value>false</param-value>
</context-param>
11
Antman06

Web.xmlにResourseConfigがないため、この例外が発生しています。

追加:

<init-param>
    <param-name>com.Sun.jersey.config.property.packages</param-name>
    <param-value>/* Name of Package where your service class exists */</param-value>
</init-param>

サービスクラスとは、次のようなサービスを含むクラスを意味します。@Path("/orders")

9
TechSunil

Eclipseプロジェクトからwebappを実行しようとすると、同じ問題が発生しました。 .classファイルを/WEB-INF/classesにコピーするとすぐに完全に機能しました。

7
Rodrigo Asensio

私は同じ問題を抱えて、多くの異なる例をテストし、可能な解決策をすべて試しました。最終的にそれが機能したのは、クラス行に@Path("")を追加したときでした。

6
Holstadius

同じ問題があり、それがソースコードのデプロイ方法に問題があることがわかりました。エラーメッセージが示すように:"...does not contain any root resource classes"。そのため、構成済みパッケージにリソースクラスが見つかりませんでした。私はクラスを間違ってデプロイしました-それがそれを拾わなかった理由です。

クラスファイルをWARの/ WEB-INF/classesディレクトリにデプロイするのを忘れていました。最初は、WARファイルのルートに直接配置していました。そのため、リソースクラスを検索しても、それらは見つかりませんでした-それらは別の(間違った)場所に存在していたからです。

4
NS du Toit

同じ問題-web.xmlは次のようになりました。

<servlet>
    <servlet-name>JerseyServlet</servlet-name>
    <servlet-class>com.Sun.jersey.spi.container.servlet.ServletContainer</servlet-class>
    <init-param>
        <param-name>javax.ws.rs.Application</param-name>
        <param-value>com.mystuff.web.JerseyApplication</param-value>
    </init-param>
...

カスタムアプリケーションを提供すると、XMLで設定されたクラスの自動検出がオーバーライドされます。適切なメソッドを実装して、独自のコードを記述してクラスを結び付ける必要があります。 javadocsを参照してください。

4
Dustin Getz

このエラーの別の考えられる原因は、ビルドパスに既に/WEBINF/libフォルダーにあるライブラリを追加するのを忘れたことです(たとえば、.war-ファイルをインポートし、求められたときにライブラリをチェックしない場合)魔法使い)。ちょうど私に起こった。

3
bmurauer

Main.jarをデプロイしたときに、Eclipseexport jarメニューのadd directory entriesボックスをチェックせずに起こりました。

3
serj

もう1つ確認するのは、以前のエントリの組み合わせです

Web.xmlファイルに以下を含めることができます。

<init-param>
        <param-name>com.Sun.jersey.config.property.packages</param-name>
        <param-value>com.acme.rest</param-value>
</init-param>

そしてあなたは持つことができます

<context-param>
    <param-name>resteasy.scan</param-name>
    <param-value>false</param-value>
</context-param>
<context-param>
    <param-name>resteasy.scan.providers</param-name>
    <param-value>false</param-value>
</context-param>
<context-param>
    <param-name>resteasy.scan.resources</param-name>
    <param-value>false</param-value>
</context-param>

しかし、両方を持つことはできません。または、この種のエラーが発生します。この場合の修正は、どちらか一方をコメントアウトすることです(おそらく最初のコードスニペットはコメントアウトされるでしょう)

2
demongolem

わかりました...私にとっては、「servlet-class」をcom.sum.jersey.spi.container.servlet.ServletContainerに割り当てるだけでうまく動作します。私はIDE(Eclipse Mars)を使用しています。

<servlet>
        <servlet-name>Jersey Web Application</servlet-name>
        <servlet-class>com.Sun.jersey.spi.container.servlet.ServletContainer</servlet-class>
        <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>Jersey Web Application</servlet-name>
        <url-pattern>/frontend/*</url-pattern>
    </servlet-mapping>

しかし、何らかの理由で、ローカルホストで作業するためにコンピューターを再起動する必要がありました。それでも動作しない場合は? 「servlet」タグの間にこのコードをweb.xmlに追加する必要があります。

<init-param>
  <param-name>com.Sun.jersey.config.property.packages</param-name>
  <param-value>the.package.name</param-value>
</init-param>

「the.package.name」は、クラスがあるパッケージ名です。 IDEを使用している場合は、プロジェクトを更新し、Tomcatで再度実行します。それでも動作しませんか?コンピューターを再起動すると動作します。

2
user3945851

@pathの最後にスラッシュを追加する必要がありました

@Path ("/admin/") 
2
MobileMon

まあ、返信が少し遅れています。私は同じ問題に直面しました、そして、私のGoogle検索は無駄でした。しかし、何が問題なのかを見つけることができました。このエラーが発生する理由はたくさんありますが、次の理由でエラーが発生しました。これを仲間の開発者と共有したいと思いました。

  1. 以前にJersey 1.3を使用しましたが、このエラーが発生していました。しかし、ジャーをジャージーの最新バージョンにアップグレードすると、この問題は解決しました。
  2. このエラーが発生するもう1つの例は、warファイルを作成してサービスをJBossにデプロイしようとしたときです。 Javaクラスの代わりにJavaファイルを.warに含めるというミスを犯しました。
2
Nikhil

また、この種のエラーが発生しました。xmlの構成に注意してください。

com.Sun.jersey.comfig.property.packagesを書きました

com.Sun.jersey.config.property.packagesの代わりに

修正後は機能しています。

1
Ravi Thapa

おそらく手遅れですが、これが私がこのエラーを解決する方法です。

このソリューションが機能しない場合、

<init-param>
    <param-name>com.Sun.jersey.config.property.packages</param-name>
    <param-value>/* Name of Package where your service class exists */</param-value>
</init-param>

Eclipseの場合:

右クリックプロジェクトで選択するか、プロジェクトを選択して押しますAlt + Enter開いたウィンドウの左側でJavaビルドパス

右側のタブパネルからライブラリを選択します。破損しているものやjarの上に十字マークが表示されているものがある場合は、同じjarを削除して再度追加します

適用して閉じる

プロジェクトを再構築する

1
Sufiyan Ansari

その問題は、ジャージが宣言された残りのサービスの依存関係パッケージを見つけることができないためです

プロジェクトパッケージの配布を確認し、web.xmlのパラメーター値と等しいことをアサートします

1

はい、com.Sun.jersey.config.property.packagesのinitパラメーターを追加すると、この問題が修正されました。

ジャージーレストサービスをMavenベースのSpringアプリケーションにマージしていたときにこのエラーが発生しました。

1
Harinath

私の場合、戦争からインポートした後、ビルドパスにjarを2回追加しました。エラーデプロイメント記述子のエラーページを表示していた余分なjarを削除した後、正常に機能しました

追加

<init-param>
          <param-name>com.Sun.jersey.config.property.packages</param-name>
          <param-value>service.package.name</param-value>
</init-param>
0
Hema

また、さまざまな理由で2回、この問題に遭遇しました。最初に含めるのを忘れたとき

<init-param>
<param-name>com.Sun.jersey.config.property.packages</param-name>
<param-value>my.package.name</param-value>
</init-param>

前のコメントで説明したように、私がそれを行うと、機能し始めました。

それでも...別の日、私はEclipseを開始し、中断したところから続けることを期待し、プログラムを動作させる代わりに、まったく同じエラーをもう一度示しました。誤っていくつかの変更を加えて破損したファイルを保存したかどうかをチェックし始めましたが、そのようなエラーは見つからず、ファイルはすべて私が持っている例とまったく同じように見えました。前日は動作していたので、最初の検索の後、Eclipse、またはTomcatの不具合などだと思ったので、変更を加えて反応するかどうかを見てみましょう。そのため、web.xmlファイルにスペースとバックスペースを追加しました。ファイルが変更されたことをEclipseをだまして、それを保存しました。次のステップは、Tomcatサーバーを(Eclipse IDEから)再起動することでした。

より幅広い経験を持つ誰かが、このすべての背後にある問題が実際に何であったかを説明できるでしょうか?

0
Gishas