jersey - management - La instancia de ResourceConfig no contiene ninguna clase de recurso raíz
portal azure (23)
Básicamente lo corregí como a continuación y todo funcionó bien.
<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>
¿Qué está 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");
}
}
Bueno, es un poco tarde para responder. He enfrentado el 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 compartir esto con mis compañeros desarrolladores.
- Anteriormente utilicé Jersey 1.3 y estaba obteniendo este error. Pero cuando actualicé los frascos a la última versión de Jersey, este problema se resolvió.
- Otra instancia en la que obtuve este error fue cuando estaba tratando de implementar mi servicio en JBoss construyendo un archivo war. Cometí el error de incluir los archivos Java en las clases .war en lugar de Java.
El mismo problema: web.xml se veía así:
<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>
...
Proporcionar una aplicación personalizada anula cualquier detección automática de clases configurada en XML. Debe implementar los métodos correctos para escribir su propio código para conectar las clases. Ver los javadocs.
En mi caso, he agregado las jarras dos veces en la ruta de compilación después de importar desde la guerra. Funcionó bien después de quitar los tarros adicionales que mostraban las páginas de error del descriptor de despliegue de error
agregando
<init-param>
<param-name>com.sun.jersey.config.property.packages</param-name>
<param-value>service.package.name</param-value>
</init-param>
Esto significa que no pudo encontrar ninguna clase que se pueda ejecutar como el servicio web RESTful de jersey.
Comprobar:
- Si falta ''
com.sun.jersey.config.property.packages
'' en su web.xml. - Si el valor del param ''
com.sun.jersey.config.property.packages
'' falta o no es válido (el paquete mencionado no existe). Debe ser un paquete donde haya puesto sus clases de POJO que se ejecutan como servicios de jersey. - Si existe al menos una clase POJO, que tiene un método anotado con el atributo
@Path
.
Has intentado agregar
<init-param>
<param-name>com.sun.jersey.config.property.packages</param-name>
<param-value>my.package.name</param-value>
</init-param>
a su definición SpringServlet? Obviamente, reemplace my.package.name con el paquete en el que se encuentra AdminUiResource y asegúrese de que esté en classpath.
Me encontré con este problema con JBOSS EAP 6.1. Pude desplegar 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 el web.xml para que funcione correctamente con JBOSS al permitir que los dos trabajen juntos.
Las siguientes dos líneas fueron comentadas en web.xml para permitir a JBOSS hacer sus propias configuraciones
<!--
<init-param>
<param-name>com.sun.jersey.config.property.packages</param-name>
<param-value>com.your.package</param-value>
</init-param> -->
Y luego agregue los siguientes parámetros de contexto después
<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>
Me sucedió cuando implementé mi main.jar, sin marcar el cuadro de agregar entradas de directorio en el menú export jar en Eclipse .
NECESITA AGREGAR EL NOMBRE DE SU PAQUETE EN
<init-param>
<param-name>com.sun.jersey.config.property.packages</param-name>
<param-value>your.package.name</param-value>
</init-param>
TAMBIÉN UNA COSA SENCILLA QUE HE NOTADO,
Necesito actualizar mi proyecto después de MAVEN BUILD else me muestra el mismo error.
Comente si conoce el motivo por el que debemos actualizar el proyecto.
Ok ... Para mí funciona bien, solo estoy asignando la "servlet-class" a com.sum.jersey.spi.container.servlet.ServletContainer, estoy usando 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>
pero por alguna razón tuve que reiniciar mi computadora para poder trabajar en mi servidor local. Si aún no funciona? Tienes que agregar en tu web.xml este código entre la etiqueta "servlet".
<init-param>
<param-name>com.sun.jersey.config.property.packages</param-name>
<param-value>the.package.name</param-value>
</init-param>
"the.package.name" es el nombre del paquete donde tiene sus clases. Si está utilizando IDE, actualice el proyecto y vuelva a ejecutarlo en Tomcat. todavía no funciona? reinicia tu computadora y funcionará.
Otra cosa para verificar es una combinación de entradas previas
Puede tener en su archivo web.xml esto:
<init-param>
<param-name>com.sun.jersey.config.property.packages</param-name>
<param-value>com.acme.rest</param-value>
</init-param>
y puedes tener
<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>
pero no puedes tener las dos o tienes este tipo de error. La solución en este caso sería comentar uno o el otro (probablemente el primer fragmento de código sería comentado)
Otra posible causa de este error es que ha olvidado agregar las bibliotecas que ya están en la /WEBINF/lib
a la ruta de compilación (por ejemplo, cuando se importa un archivo .war
y no se comprueban las bibliotecas cuando se le solicita en el asistente). Solo me pasó a mí.
Recibo esta excepción porque falta ResourseConfig en Web.xml.
Añadir:
<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>
Clase de servicio significa: clase que contiene servicios como: @Path("/orders")
Soy nuevo en Jersey, tuve el mismo problema, pero cuando eliminé el "/" y simplemente usé @path ("admin") funcionó.
@Path("admin")
public class AdminUiResource { ... }
Su paquete de recursos debe contener al menos un pojo que tenga anotaciones con @Path o tenga al menos un método anotado con @Path o un designador de método de solicitud, como @GET, @PUT, @POST o @DELETE. Los métodos de recursos son métodos de una clase de recurso anotada con un designador de método de solicitud. Esto resolvió mi problema ...
También recibí este tipo de error, por favor, cuide las configuraciones en xml.
Escribí com.sun.jersey.comfig.property.packages
En lugar de com.sun.jersey.config.property.packages
Después de la corrección, está funcionando.
Tuve el mismo problema al intentar ejecutar la aplicación web de un proyecto de eclipse. Tan pronto copié los archivos .class a /WEB-INF/classes
funcionó perfectamente.
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. Acabo de implementar las clases incorrectamente, es por eso que no lo aprendí.
Olvidé desplegar mis archivos de clase en el directorio / WEB-INF / classes de la GUERRA, 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).
Tuve el mismo problema, probando varios ejemplos diferentes e intenté con todas las soluciones posibles. Lo que finalmente @Path("")
para mí fue cuando agregué un @Path("")
sobre la línea de la clase, lo había dejado fuera.
Tuve que agregar una barra inclinada hacia adelante al final de @path
@Path ("/admin/")
ese problema se debe a que Jersey no puede encontrar un paquete de dependencia para su servicio de descanso declarado
verifique la distribución de su paquete de proyecto y afirme que es igual a su valor de parámetro web.xml
sí, agregando el parámetro init para com.sun.jersey.config.property.packages solucionó este problema para mí.
estaba fusionando los servicios de descanso de jersey con la aplicación de primavera basada en maven y obtuve este error.
Probablemente sea demasiado tarde, pero así es como resolví este error.
Si esta solución no funciona,
<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>
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, encuentre Java Build Path
Seleccione Bibliotecas en el panel de pestañas derecho: si hay algo que está dañado o que muestra una marca cruzada en la parte superior de los tarros, elimine y vuelva a agregar el mismo tarro
Aplicar y Cerrar
Reconstruye tu proyecto