Co tu się dzieje?
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)
Filtr:
<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>
Kod:
@Path ("/admin")
public class AdminUiResource {
@GET
@Produces ("text/html")
@Path ("/singup")
public Viewable getSignUp () {
return new Viewable("/public/signup", "Test");
}
}
"/singup"
zamiast"/signup"
mieć tu jakiś efekt?Odpowiedzi:
Czy próbowałeś dodać
do Twojej definicji SpringServlet? Oczywiście zamień my.package.name na pakiet, w którym znajduje się AdminUiResource, i upewnij się, że znajduje się on w ścieżce klas.
źródło
init-param
docom.sun.jersey.spi.container.servlet.ServletContainer
serwletu.Jestem nowy na Jersey - miałem ten sam problem, ale kiedy usunąłem „/” i po prostu użyłem @path („admin”), zadziałało.
źródło
MUSISZ DODAĆ NAZWĘ PAKIETU NA STRONIE
źródło
Oznacza to, że nie mógł znaleźć żadnej klasy, która może być wykonana jako usługa sieciowa RESTful koszulki.
Czek:
com.sun.jersey.config.property.packages
w pliku web.xml brakuje elementu „”.com.sun.jersey.config.property.packages
parametru „ ” lub jest on nieprawidłowy (wspomniany pakiet nie istnieje). Powinien to być pakiet, w którym umieściłeś swoje klasy POJO, które działają jako usługi koszulki.@Path
atrybutem.źródło
<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>
Twój pakiet zasobów powinna zawierać co najmniej jeden POJO który jest albo z uwagami
@Path
lub mają co najmniej jedną metodę z uwagami@Path
lub żądanie desygnatorze metody, takie jak@GET
,@PUT
,@POST
, lub@DELETE
. Metody zasobów to metody klasy zasobów z adnotacją z oznaczeniem metody żądania. To rozwiązało mój problem ...źródło
Natknąłem się na ten problem z JBOSS EAP 6.1. Udało mi się wdrożyć kod przez eclipse na serwerze JBOSS, ale gdy próbowałem wdrożyć plik jako plik WAR w JBOSS, zacząłem otrzymywać ten błąd.
Rozwiązaniem było skonfigurowanie pliku web.xml do poprawnej współpracy z JBOSS poprzez umożliwienie im współpracy.
Poniższe dwie linie zostały zakomentowane w pliku web.xml, aby umożliwić JBOSS wykonywanie własnych konfiguracji
A następnie dodaj następujące parametry kontekstu po
źródło
<context-param/>
sekcji. Musiałem tylko usunąć<param-name>com.sun.jersey.config.property.packages</param-name>
<init-param/>
sekcję.<init-param>
naprawiony problem w Wildly 8.2.0; Jednak miałem inne problemy, takie jak aplikacja, którą wdrażałem, nie działała z Jersey na Wildly. Jersey (używany przez GlassFish) i RestEasy (używany przez Wildfly) mają różne konfiguracje.Zasadniczo poprawiłem to jak poniżej i wszystko działało dobrze.
źródło
Otrzymuję ten wyjątek z powodu braku elementu ResourseConfig w pliku Web.xml.
Dodaj:
Klasa usług oznacza: klasę, która zawiera usługi takie jak:
@Path("/orders")
źródło
Miałem ten sam problem z próbą uruchomienia aplikacji internetowej z projektu zaćmienia. Jak tylko skopiowałem pliki .class
/WEB-INF/classes
, działało idealnie.źródło
Miałem ten sam problem, testując kilka różnych przykładów i wypróbowałem wszystkie możliwe rozwiązania. To, co w końcu
@Path("")
sprawiło, że zadziałało dla mnie, to kiedy dodałem linię ponad klasową, pominąłem to.źródło
Miałem ten sam problem i okazało się, że jest to problem związany ze sposobem wdrażania kodu źródłowego. Jako komunikat o błędzie mówi:
"...does not contain any root resource classes"
. Dlatego nie mógł znaleźć żadnych klas zasobów w skonfigurowanym pakiecie. Po prostu źle rozmieściłem klasy - dlatego ich nie odebrałem.Zapomniałem wdrożyć pliki moich klas w katalogu / WEB-INF / classes w WAR - początkowo miałem je bezpośrednio w katalogu głównym pliku WAR. Więc kiedy szukał klas zasobów, nie znalazł ich - ponieważ istniały w innej (niewłaściwej) lokalizacji.
źródło
Ten sam problem - plik web.xml wyglądał tak:
Udostępnienie aplikacji niestandardowej zastępuje wszelkie skonfigurowane w XML automatyczne wykrywanie klas. Musisz zaimplementować odpowiednie metody, aby napisać własny kod, aby połączyć klasy. Zobacz javadocs.
źródło
Inną możliwą przyczyną tego błędu jest to, że zapomniałeś dodać biblioteki, które są już w
/WEBINF/lib
folderze do ścieżki budowania (np. Podczas importowania.war
-pliku i nie sprawdzania bibliotek, gdy zostaniesz o to poproszony w kreatorze). Po prostu mi się przydarzyło.źródło
Zdarzyło mi się to, gdy wdrożyłem plik main.jar, bez zaznaczania pola dodawania wpisów katalogu w menu eksportu jar w Eclipse .
źródło
Cóż, trochę za późno na odpowiedź. Napotkałem ten sam problem i moje wyszukiwania w Google poszły na marne. Jednak udało mi się znaleźć problem. Może istnieć wiele powodów, dla których pojawia się ten błąd, ale otrzymałem błąd z następujących powodów i chciałem się nim podzielić z innymi programistami.
źródło
Musiałem dodać końcowy ukośnik na końcu @path
źródło
Ok ... Dla mnie działa dobrze, po prostu przypisując "klasę serwletu" do com.sum.jersey.spi.container.servlet.ServletContainer, używam IDE (Eclipse Mars)
ale z jakiegoś powodu musiałem zrestartować komputer, aby pracować na moim lokalnym hoście. Jeśli nadal nie działa? Musisz dodać ten kod w swoim web.xml pomiędzy tagiem "servlet".
„the.package.name” to nazwa pakietu, w którym znajdują się Twoje klasy. Jeśli używasz IDE, odśwież projekt i uruchom ponownie w Tomcat. nadal nie działa? uruchom ponownie komputer i będzie działać.
źródło
Kolejną rzeczą do sprawdzenia jest kombinacja poprzednich wpisów
Możesz mieć w swoim pliku web.xml to:
i możesz mieć
ale nie możesz mieć obu lub otrzymujesz tego rodzaju błąd. Rozwiązaniem w tym przypadku byłoby skomentowanie jednego lub drugiego (prawdopodobnie pierwszy fragment kodu zostałby wykomentowany)
źródło
tak, dodanie parametru inicjalizacji dla com.sun.jersey.config.property.packages rozwiązało ten problem.
łączył usługi odpoczynku koszulki z aplikacją wiosenną opartą na Maven i otrzymałem ten błąd.
źródło
Otrzymałem też tego rodzaju błąd, proszę zająć się konfiguracjami w xml.
napisałem
com.sun.jersey.comfig.property.packages
Zamiast
com.sun.jersey.config.property.packages
Po korekcie działa.
źródło
ten problem jest spowodowany tym, że jersey nie może znaleźć pakietu zależności dla deklarowanej usługi odpoczynku
Sprawdź dystrybucję pakietu projektu i upewnij się, że jest równa wartości parametru web.xml
źródło
Prawdopodobnie za późno, ale tak rozwiązałem ten błąd.
Jeśli to rozwiązanie nie działa,
W zaćmieniu:
Kliknij prawym przyciskiem myszy swój projekt lub wybierz projekt i naciśnij Alt + Enter Po lewej stronie otwartego okna znajdź ścieżkę budowania Java
Wybierz Biblioteki z prawego panelu zakładek: Jeśli jest coś, co jest uszkodzone lub ma krzyżyk na górze słoików, usuń i dodaj ponownie ten sam słoik
Zastosuj i zamknij
Odbuduj swój projekt
źródło
W moim przypadku dwukrotnie dodałem słoiki w ścieżce kompilacji po zaimportowaniu z wojny. Działało dobrze po usunięciu dodatkowych plików JAR, które wyświetlały strony błędów deskryptora wdrażania błędów
dodanie
źródło
Również dwukrotnie z różnych powodów napotkaliśmy ten problem. Za pierwszym razem zapomniałem dołączyć
jak opisano w poprzednich komentarzach, a kiedy to zrobiłem, zaczęło działać.
Jednak ... innego dnia zacząłem Eclipse, spodziewając się kontynuować od miejsca, w którym przerwałem, i zamiast działać, mój program ponownie pokazał ten sam błąd. Zacząłem sprawdzać, czy przypadkowo nie dokonałem jakichś zmian i zapisałem uszkodzony plik, ale nie mogłem znaleźć takiego błędu i plik wyglądał dokładnie tak, jak przykłady, które mam, wszystko w porządku. Ponieważ zadziałało dzień wcześniej, po wstępnych poszukiwaniach pomyślałem, że może to usterka Eclipse, Tomcat lub coś w tym rodzaju, więc po prostu spróbujmy wprowadzić jakieś zmiany i zobaczmy, czy zareaguje. Zrobiłem więc spację + backspace w pliku web.xml, aby oszukać Eclipse, że plik został zmieniony, i wtedy go zapisałem. Następnym krokiem było ponowne uruchomienie serwera Tomcat (z Eclipse IDE) i voila, znowu działa!
Może ktoś z większym doświadczeniem mógłby wyjaśnić, na czym tak naprawdę polega problem?
źródło
Główną przyczyną tego wyjątku jest:
Nie podałeś poprawnej nazwy pakietu, jeśli używasz
@Path
lub zapomniałeś skonfigurować w pliku web.xml / Configuration (nazwa pakietu klasy Rest API, nazwa pakietu Twojej klasy)Sprawdź tę konfigurację w środku
<init-param>
źródło