¿Qué va mal aquí?
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)
Filtrar:
<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>
Código:
@Path ("/admin")
public class AdminUiResource {
@GET
@Produces ("text/html")
@Path ("/singup")
public Viewable getSignUp () {
return new Viewable("/public/signup", "Test");
}
}
"/singup"
lugar de"/signup"
tener algún efecto aquí?Respuestas:
Has intentado agregar
a su definición de SpringServlet? Obviamente, reemplace my.package.name con el paquete en el que se encuentra AdminUiResource y asegúrese de que esté en la ruta de clase.
fuente
init-param
alcom.sun.jersey.spi.container.servlet.ServletContainer
servlet.Soy nuevo en Jersey. Tuve el mismo problema, pero cuando eliminé la "/" y usé la @path ("admin") funcionó.
fuente
DEBE AÑADIR EL NOMBRE DE SU PAQUETE EN
fuente
Esto significa que no pudo encontrar ninguna clase que se pueda ejecutar como servicio web RESTful de jersey.
Cheque:
com.sun.jersey.config.property.packages
" falta en su web.xml.com.sun.jersey.config.property.packages
' param falta o no es válido (el paquete mencionado no existe). Debería ser un paquete donde haya colocado sus clases POJO que se ejecutan como servicios de jersey.@Path
atributo.fuente
<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>
Su paquete de recursos debe contener al menos un POJO que o bien está anotado con
@Path
o tienen al menos un método anotado con@Path
o una solicitud de método designador, tales como@GET
,@PUT
,@POST
, o@DELETE
. Los métodos de recursos son métodos de una clase de recursos anotados con un designador de método de solicitud. Esto resolvió mi problema ...fuente
Me encontré con este problema con JBOSS EAP 6.1. Pude implementar mi código a través de eclipse en el servidor JBOSS, pero una vez que intenté implementar el archivo como un archivo WAR en JBOSS, comencé a recibir este error.
La solución fue configurar web.xml para que funcione correctamente con JBOSS al permitir que los dos trabajen juntos.
Las siguientes dos líneas se comentaron en web.xml para permitir que JBOSS haga sus propias configuraciones
Y luego agregue los siguientes parámetros de contexto después
fuente
<context-param/>
embargo, no tuve que agregar la sección. Solo tenía que quitar la<param-name>com.sun.jersey.config.property.packages</param-name>
<init-param/>
sección.<init-param>
solucionado este problema en Wildly 8.2.0; sin embargo, tuve otros problemas, como que la aplicación que estaba implementando no se ejecutaba con Jersey en Wildly. Jersey (utilizado por GlassFish) y RestEasy (utilizado por Wildfly) tienen configuraciones diferentes.Básicamente lo corrigí como a continuación y todo funcionó bien.
fuente
Recibo esta excepción debido a que falta un ResourseConfig en Web.xml.
Añadir:
Clase de servicio significa: clase que contiene servicios como:
@Path("/orders")
fuente
Tuve el mismo problema al intentar ejecutar la aplicación web desde un proyecto de eclipse. Tan pronto como copié los archivos .class
/WEB-INF/classes
, funcionó perfectamente.fuente
Tuve el mismo problema, probé un montón de ejemplos diferentes y probé todas las soluciones posibles. Lo que finalmente hizo que funcionara para mí fue cuando agregué un
@Path("")
over the class line, lo dejé fuera.fuente
Tuve el mismo problema y descubrí que era un problema con la forma en que implementé mi código fuente. Como dice el mensaje de error:
"...does not contain any root resource classes"
. Por lo tanto, no pudo encontrar ninguna clase de recursos en el paquete configurado. Simplemente implementé mal las clases, por eso no las recogió.Olvidé implementar mis archivos de clase en el directorio / WEB-INF / classes del WAR; inicialmente lo tenía directamente en la raíz del archivo WAR. Entonces, cuando buscó clases de recursos, no las encontró, porque existían en una ubicación diferente (incorrecta).
fuente
Mismo problema - web.xml se veía así:
Proporcionar una aplicación personalizada anula cualquier detección automática de clases configurada en XML. Necesita implementar los métodos correctos para escribir su propio código para conectar las clases. Vea los javadocs.
fuente
Otra posible causa de este error es que se olvidó de agregar las bibliotecas que ya están en la
/WEBINF/lib
carpeta a la ruta de compilación (por ejemplo, al importar un.war
archivo y no verificar las bibliotecas cuando se le solicita en el asistente). Me acaba de pasar.fuente
Me sucedió cuando implementé mi main.jar, sin marcar la casilla de agregar entradas de directorio en el menú de exportar jar en Eclipse .
fuente
Bueno, es un poco tarde para responder. Me he enfrentado al mismo problema y mis búsquedas en Google fueron en vano. Sin embargo, logré encontrar cuál era el problema. Puede haber muchas razones para obtener este error, pero recibí el error debido a lo siguiente y quería compartirlo con mis compañeros desarrolladores.
fuente
Tuve que agregar una barra diagonal al final de @path
fuente
Ok ... Para mí funciona bien simplemente asignando la "clase de servlet" a com.sum.jersey.spi.container.servlet.ServletContainer, estoy usando IDE (Eclipse Mars)
pero por alguna razón tuve que reiniciar mi computadora para poder trabajar en mi localhost. ¿Si todavía no funciona? Tienes que agregar en tu web.xml este código entre la etiqueta "servlet".
"the.package.name" es el nombre del paquete donde tienes tus clases. Si está utilizando IDE, actualice el proyecto y vuelva a ejecutarlo en Tomcat. todavía no funciona? reinicia tu computadora y funcionará.
fuente
Otra cosa para verificar es una combinación de entradas anteriores.
Puede tener en su archivo web.xml esto:
y puedes tener
pero no puede tener ambos o obtendrá este tipo de error. La solución en este caso sería comentar uno u otro (probablemente el primer fragmento de código estaría comentado)
fuente
sí, agregando el parámetro init para com.sun.jersey.config.property.packages solucionó este problema para mí.
estaba fusionando un servicio de descanso de jersey en una aplicación de primavera basada en maven y obtuve este error.
fuente
También recibí este tipo de error, ocúpese de las configuraciones en xml.
escribí
com.sun.jersey.comfig.property.packages
En vez de
com.sun.jersey.config.property.packages
Después de la corrección, está funcionando.
fuente
ese problema se debe a que jersey no puede encontrar un paquete de dependencia para su servicio de descanso declarado
verifique la distribución del paquete de su proyecto y afirme que es igual a su valor de parámetro web.xml
fuente
Probablemente sea demasiado tarde, pero así es como resolví este error.
Si esta solución no funciona,
En eclipse:
Haga clic con el botón derecho en su proyecto o seleccione Proyecto y presione Alt + Enter En el lado izquierdo de la ventana abierta, busque Java Build Path
Seleccione Bibliotecas en el panel de pestañas de la derecha: si hay algo que está dañado o muestra una marca de cruz en la parte superior de los frascos, elimine y agregue el mismo frasco nuevamente
Aplicar y cerrar
Reconstruye tu proyecto
fuente
En mi caso, he agregado los frascos dos veces en la ruta de compilación después de importar desde la guerra. Funcionó bien después de eliminar los frascos adicionales que mostraban páginas de error del descriptor de implementación de errores
agregando
fuente
También encontré este problema, dos veces por diferentes razones. La primera vez que olvidé incluir
como se describe en comentarios anteriores, y una vez que hice eso, comenzó a funcionar.
Sin embargo ... otro día comencé Eclipse, esperando continuar donde lo dejé, y en lugar de tener mi programa funcionando, mostró el mismo error una vez más. Comencé a verificar si accidentalmente había realizado algunos cambios y guardado el archivo dañado, pero no pude encontrar ese error y el archivo se veía exactamente como los ejemplos que tengo, todos en orden. Como funcionó el día anterior, después de una búsqueda inicial, pensé, bueno, tal vez sea un error de Eclipse, Tomcat o algo así, así que intentemos hacer algunos cambios y ver si reacciona. Entonces, hice un espacio + retroceso en el archivo web.xml, solo para engañar a Eclipse que el archivo se cambió, y luego lo guardé. El siguiente paso fue reiniciar el servidor Tomcat (desde Eclipse IDE) y listo, ¡funciona de nuevo!
¿Quizás alguien con una experiencia más amplia podría explicar cuál era realmente el problema detrás de todo esto?
fuente
La causa principal de esta excepción es:
No ha proporcionado el nombre correcto del paquete en el que utilizó
@Path
o olvidó configurar en web.xml / archivo de configuración (nombre del paquete del archivo de clase de la API de descanso, nombre del paquete de su clase)Compruebe esta configuración en el interior
<init-param>
fuente