ResourceConfig उदाहरण में कोई रूट संसाधन वर्ग नहीं है


79

यहाँ क्या गलत हो रहा है?

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");
  }
}

क्या आपका यहाँ कोई असर होने के "/singup"बजाय "/signup"है?
केन विलियम्स

यह एक सर्वलेट होना चाहिए, न कि एक फिल्टर
एमरे कॉनटैकस

जांचें कि आपका पैकेज-नाम और अन्य पैरामीटर सही हैं या नहीं।
गौरव

जवाबों:


82

क्या आपने जोड़ने की कोशिश की है

<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 में है और सुनिश्चित करें कि यह क्लासपाथ में है।


3
स्प्रिंग का उपयोग नहीं करने वाले लोगों के लिए: आपको init-paramइसे com.sun.jersey.spi.container.servlet.ServletContainerसर्वलेट में जोड़ना होगा ।
zb226

33

मैं जर्सी के लिए नया हूं - मेरे पास एक ही मुद्दा था, लेकिन जब मैंने "/" को हटा दिया और सिर्फ @path ("व्यवस्थापक") का उपयोग किया तो यह काम कर गया।

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

मैं स्प्रिंग JAX-RS, जर्सी का उपयोग कर रहा हूं। यह समाधान मेरे लिए ठीक काम कर रहा है।
सूर्य

30

आपको अपने पैकेज का नाम एटी में जोड़ने की आवश्यकता है

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

भी एक मूर्खतापूर्ण बात मैं देखा,
मैं अपने प्रोजेक्ट के बाद ताज़ा करने की आवश्यकता MAVEN BUILD वरना यह मुझे दिखाने के एक ही त्रुटि।
कृपया टिप्पणी करें यदि आप कारण जानते हैं कि हमें परियोजना को ताज़ा करने की आवश्यकता क्यों है?


2
आपने धमाल मचाया! जब मैंने मावेन इंस्टॉल के बाद अपने प्रोजेक्ट को रिफ्रेश किया तो यह सही ढंग से काम कर रहा था! धन्यवाद। :)
महान

2
@ धन्यवाद, वास्तव में अजीब है। इसके वर्किंग फाइन को रिफ्रेश करने के बाद। इसके अलावा आप के लिए हैक
अरुण

28

इसका मतलब है, यह किसी भी वर्ग को नहीं मिल सकता है जिसे जर्सी रेस्टफुल वेब सेवा के रूप में निष्पादित किया जा सकता है।

जाँच:

  • क्या com.sun.jersey.config.property.packagesआपके web.xml में ' ' गायब है।
  • क्या ' com.sun.jersey.config.property.packages' परम के लिए मान गायब है या अमान्य है (उल्लिखित पैकेज मौजूद नहीं है)। यह एक पैकेज होना चाहिए जहां आपने अपनी POJO कक्षाएं लगाई हैं जो जर्सी सेवाओं के रूप में चलती हैं।
  • क्या कम से कम एक POJO वर्ग मौजूद है, जिसमें @Pathविशेषता के साथ एनोटेट की गई विधि है ।

किसी कारण से मेरे पास यह संपत्ति j जर्सी.config.server.provider.packages नाम की थी और इसने ग्लासफिश के तहत काम किया। नाम बदलने के बाद यह जेट्टी में भी काम करता है।
ओडीसियस

3
मेरी कॉन्फ़िग फ़ाइल में कुछ पंक्तियों ने एक खाली निर्देशिका को संदर्भित किया, जो इस त्रुटि का कारण बन रही थी। <servlet> <servlet-name>Jersey Web Services</servlet-name> <servlet-class>com.sun.jersey.spi.spring.container.servlet.SpringServlet</servlet-class> <!-- <init-param> <param-name>com.sun.jersey.config.property.packages</param-name> -------><param-value>package.without.any.webservices</param-value> </init-param> --> <load-on-startup>1</load-on-startup> </servlet>
नील्सव

12

आपके संसाधन पैकेज कम से कम एक POJO जो या तो साथ टिप्पणी की जाती है को शामिल करना चाहिए @Pathया कम से कम एक विधि के साथ टिप्पणी किए गए @Pathइस तरह के रूप में या एक अनुरोध विधि डेसिग्नेटर, @GET, @PUT, @POST, या @DELETE। संसाधन विधियाँ एक अनुरोध विधि पदनाम के साथ एनोटेट किए गए संसाधन वर्ग की विधियाँ हैं। इससे मेरी समस्या हल हो गई ...


11

मैं JBOSS EAP 6.1 के साथ इस समस्या को लेकर भागा। मैं अपने कोड को JBOSS सर्वर पर ग्रहण के माध्यम से तैनात करने में सक्षम था, लेकिन एक बार जब मैंने JBOSS को WAR फ़ाइल के रूप में फ़ाइल को तैनात करने का प्रयास किया तो मुझे यह त्रुटि मिलने लगी।

समाधान JBOSS के साथ ठीक से काम करने के लिए web.xml को कॉन्फ़िगर कर रहा था ताकि दोनों एक साथ काम कर सकें।

JBOSS को स्वयं के विन्यास करने की अनुमति देने के लिए web.xml में निम्नलिखित दो पंक्तियों पर टिप्पणी की गई थी

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

और फिर निम्नलिखित संदर्भ params जोड़ें

<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>

3
इस सुझाव ने मेरे लिए Wildfly 8.1 पर काम किया। <context-param/>हालांकि अनुभाग को जोड़ना नहीं था । केवल <param-name>com.sun.jersey.config.property.packages</param-name> <init-param/>सेक्शन हटाना पड़ा ।
डोनोवन मुलर

3
मेरे लिए भी वैसा ही। बस <init-param>इस मुद्दे को बेतहाशा 8.2.0 पर टिप्पणी / हटाने ; हालाँकि मुझे अन्य परेशानियाँ थीं जैसे कि मैं जिस ऐप को तैनात कर रहा था वह जर्सी के साथ बेतहाशा नहीं चलेगा। जर्सी (ग्लासफिश द्वारा उपयोग किया जाता है) और रेस्टएसी (वाइल्डफ्लाय द्वारा प्रयुक्त) के अलग-अलग विन्यास हैं।
लैंट्रिक्स

2
मैं कई घंटों से संघर्ष कर रहा था। यह वास्तव में मेरी मदद की!
15

10

मूल रूप से मैंने इसे नीचे की तरह ठीक किया और सब कुछ ठीक काम किया।

<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

मुझे यह अपवाद मिल रहा है, क्योंकि 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")


7

मेरे पास एक ही मुद्दा था कि एक ग्रहण परियोजना से वेब को चलाने की कोशिश कर रहा हूं। जैसे ही मैंने .class फ़ाइलों को कॉपी /WEB-INF/classesकिया, पूरी तरह से काम किया।


हां..आप सही हैं ... मेरे जावा कोड में कुछ त्रुटि के कारण, क्लास फाइलें ठीक से उत्पन्न नहीं होती हैं। इसलिए मेरे लिए उपरोक्त त्रुटि आई .. उन जावा त्रुटियों को ठीक किया, कोड को साफ किया और नए वर्ग उत्पन्न फाइलें थीं। कक्षा फ़ाइल पीढ़ी के बाद, उपरोक्त त्रुटि मेरे लिए तय की गई। धन्यवाद रोड्रिगो

इसलिए आपको इसमें सेटअप करना होगा कि निर्मित .class फाइलें वहां जाएं? अजीब बात है कि ग्रहण या किसी दिन यह स्वचालित रूप से नहीं होता है
Dukeatcoding

6

मेरे पास एक ही मुद्दा था, विभिन्न उदाहरणों के एक समूह का परीक्षण, और सभी संभव समाधानों की कोशिश की। आखिरकार यह मेरे लिए काम कर रहा था जब मैंने @Path("")क्लास लाइन पर जोड़ा था, मैंने उसे छोड़ दिया था।


5

एक ही मुद्दा था और मुझे पता चला कि जिस तरह से मैंने अपने स्रोत कोड को तैनात किया था, उससे यह समस्या थी। जैसा कि त्रुटि संदेश कहता है:"...does not contain any root resource classes" :। इसलिए यह कॉन्फ़िगर किए गए पैकेज में कोई संसाधन वर्ग नहीं ढूंढ सका। मैंने गलत तरीके से कक्षाएं लगाईं - इसीलिए इसे नहीं उठाया।

मैं WAR की / WEB-INF / classes डायरेक्टरी में अपनी क्लास की फाइल्स तैनात करना भूल गया - शुरू में मेरे पास सीधे WAR फाइल की जड़ में था। इसलिए जब उसने संसाधन वर्गों की तलाश की तो यह उन्हें नहीं मिला - क्योंकि वे एक अलग (गलत) स्थान पर मौजूद थे।


4

एक ही मुद्दा - 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 कॉन्फ़िगर किए गए ऑटो डिटेक्शन को ओवरराइड करता है। कक्षाओं को तार करने के लिए आपको अपना कोड लिखने के लिए सही तरीकों को लागू करने की आवश्यकता है। जावदको देखें।


3

इस त्रुटि का एक अन्य संभावित कारण यह है कि आप उन पुस्तकालयों को जोड़ना भूल गए हैं जो पहले /WEBINF/libसे ही निर्मित पथ के लिए फ़ोल्डर में हैं (उदाहरण के लिए .war-फाइल आयात करते समय और विज़ार्ड में पूछे जाने पर पुस्तकालयों की जांच नहीं करते हैं)। बस मेरे साथ हुआ।


3

यह मेरे साथ तब हुआ जब मैंने ग्रहण में निर्यात जार मेनू में डायरेक्टरी एंट्रीज़ बॉक्स की जाँच किए बिना अपना main.jar तैनात किया ।


2

खैर, जवाब देने में थोड़ी देर हो गई। मैंने उसी समस्या का सामना किया है और मेरी Google खोजें व्यर्थ गईं। हालांकि, मैं यह पता लगाने में कामयाब रहा कि समस्या क्या थी। इस त्रुटि को प्राप्त करने के कई कारण हो सकते हैं लेकिन मुझे निम्नलिखित के कारण त्रुटि मिली और मैं इसे अपने साथी डेवलपर्स के साथ साझा करना चाहता था।

  1. मैंने पहले जर्सी 1.3 का उपयोग किया था और मुझे यह त्रुटि मिल रही थी। लेकिन जब मैंने जर्सी के नवीनतम संस्करण में जार को अपग्रेड किया, तो यह मुद्दा हल हो गया।
  2. एक और उदाहरण जिसमें मुझे यह त्रुटि मिली जब मैं एक युद्ध फ़ाइल का निर्माण करके अपनी सेवा को JBoss में तैनात करने की कोशिश कर रहा था। मैंने जावा क्लासेस के बजाय .war में जावा फाइलों को शामिल करने की गलती की।


2

ठीक है ... मेरे लिए ठीक काम केवल "सर्वलेट-क्लास" को com.sum.jersey.spi.container.servlet.ervletContainer पर असाइन करने के लिए, मैं आईडीई (ग्रहण मंगल) का उपयोग कर रहा हूं

<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>

लेकिन किसी कारण से मुझे अपने कंप्यूटर को अपने लोकलहोस्ट में काम करने के लिए रिबूट करना पड़ा। अगर फिर भी काम नहीं हुआ तो? आपको अपने वेब.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" पैकेज का नाम है जहाँ आपके पास अपनी कक्षाएं हैं। यदि आप आईडीई का उपयोग कर रहे हैं, तो प्रोजेक्ट को रिफ्रेश करें और टॉमकैट में फिर से चलाएं। अभी भी काम नहीं है? अपने कंप्यूटर को रिबूट करें और काम करेंगे।


2

जांच करने के लिए एक और चीज पिछली प्रविष्टियों का एक संयोजन है

आप अपने 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>

लेकिन आपके पास इस प्रकार की त्रुटि नहीं हो सकती है। इस मामले में फिक्स एक या दूसरे पर टिप्पणी करना होगा (शायद पहले कोड स्निपेट पर टिप्पणी की जाएगी)


1

हाँ com.sun.jersey.config.property.packages के लिए init param को जोड़ना मेरे लिए इस समस्या को निर्धारित करता है।

मावेन आधारित स्प्रिंग एप्लिकेशन में जर्सी की बाकी सेवाओं को मर्ज कर रहा था और उसे यह त्रुटि मिली।


1

मुझे इस तरह की त्रुटि भी मिली, कृपया xml में कॉन्फ़िगरेशन का ध्यान रखें।

मैंने लिखा com.sun.jersey.comfig.property.packages

के बजाय com.sun.jersey.config.property.packages

सुधार के बाद यह काम कर रहा है।


1

यह मुद्दा इसलिए है क्योंकि जर्सी आपकी बाकी सेवा के लिए घोषित नहीं है

अपने प्रोजेक्ट पैकेज वितरण और परखें जो आपके web.xml param value के बराबर है


1

शायद बहुत देर हो गई लेकिन यह है कि मैंने इस त्रुटि को कैसे हल किया।

यदि यह समाधान काम नहीं कर रहा है,

<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>

ग्रहण में:

अपने प्रोजेक्ट पर राइट क्लिक करें या प्रोजेक्ट चुनें और Alt + Enter दबाएं विंडो के बाईं ओर जावा बिल्ड पाथ ढूंढें

दाएँ टैब पैनल से लाइब्रेरीज़ चुनें: यदि कोई ऐसी चीज़ है जो दूषित है या जार के शीर्ष पर क्रॉस का निशान दिखा रहा है, तो उसी जार को फिर से निकालें और जोड़ें

लागू करें और बंद करें

अपने प्रोजेक्ट का पुनर्निर्माण करें


0

मेरे मामले में मैंने युद्ध से आयात करने के बाद निर्माण पथ में दो बार जार जोड़े हैं। अतिरिक्त जार को हटाने के बाद यह ठीक काम करता है जो त्रुटि तैनाती वर्णनकर्ता त्रुटि पृष्ठों को दिखा रहा था

जोड़ने

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

0

अलग-अलग कारणों से दो बार इस समस्या का सामना करना पड़ा। पहली बार मैं शामिल करना भूल गया

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

जैसा कि पिछली टिप्पणियों में वर्णित है, और एक बार मैंने ऐसा किया, यह काम करना शुरू कर दिया।

फिर भी ... एक और दिन मैंने ग्रहण करना शुरू कर दिया, जहां मैंने छोड़ दिया, उसे जारी रखने की अपेक्षा की और अपने कार्यक्रम को काम करने के बजाय एक बार फिर वही त्रुटि दिखाई। मैंने जांचना शुरू कर दिया कि क्या मैंने गलती से कुछ बदलाव किए हैं और दूषित फ़ाइल को सहेज लिया है, लेकिन ऐसी कोई त्रुटि नहीं मिल सकती है और फ़ाइल बिल्कुल मेरे जैसे उदाहरणों की तरह दिखती है। चूंकि इसने पहले दिन काम किया था, कुछ शुरुआती खोज के बाद, मैंने सोचा, ठीक है, शायद यह एक ग्रहण है, या टॉम्केट गड़बड़ या कुछ और है, तो चलो बस कुछ बदलाव करने की कोशिश करें और देखें कि क्या यह प्रतिक्रिया करता है। तो, मैंने web.xml फ़ाइल में एक स्पेस + बैकस्पेस किया, बस एक्लिप्स को बेवकूफ बनाने के लिए कि फ़ाइल को बदल दिया गया है, और फिर इसे सहेज लिया। अगला चरण टॉमकैट सर्वर (एक्लिप्स आईडीई से) और वॉइला को पुनः आरंभ कर रहा था, यह फिर से काम करता है!

शायद व्यापक अनुभव वाला कोई व्यक्ति यह बता सकता है कि इस समस्या के पीछे वास्तव में क्या समस्या थी?


-1

इस अपवाद का मुख्य कारण है:

आपने उचित पैकेज नाम नहीं दिया है जहाँ आप उपयोग कर रहे हैं @Path या web.xml / कॉन्फ़िगरेशन फ़ाइल में कॉन्फ़िगर करना भूल गए हैं (रेस्ट एपीआई क्लास फ़ाइल पैकेज नाम, आपका क्लास पैकेज नाम)

इस कॉन्फ़िगरेशन की अंदर की जाँच करें <init-param>


@ ज़ेफ़रमैन यह स्पष्ट रूप से प्रश्न का उत्तर प्रदान करने का एक प्रयास है। कृपया LQP कतार में समीक्षा करते समय अधिक ध्यान रखें।
टायलरएच
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.