org.glassfish.jersey.servlet.ServletContainer ClassNotFoundException [英] org.glassfish.jersey.servlet.ServletContainer ClassNotFoundException
问题描述
我一直在用 org.glassfish.jersey.servlet.ServletContainer
得到一个ClassNotFoundException异常,但是当我试图启动/重新启动Tomcat服务器时,它特别在昨晚开始(v7)和Eclipse Juno。
不知道发生了什么事。奇怪的是,它刚刚开始发生在昨天晚上,当它在这之前工作完美。
以下是堆栈跟踪:
2014年2月25日上午11:11:19 org.apache.catalina.core.ApplicationContext log
INFO:标记servlet com.att.ucomm.admin.UCommAdminFunctions as unavailable
2014年2月25日上午11:11:19 org.apache.catalina.core.StandardContext loadOnStartup
SEVERE:Servlet / UCommAdminFunctions抛出load()异常
java.lang.ClassNotFoundException: org.glassfish.jersey.servlet.ServletContainer
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1671)
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader .java:1516)
at org.apache.catalina.core.DefaultInstanceManager.loadClass(DefaultInstanceManager.java:415)
at org.apache.catalina.core.DefaultInstanceManager.loadClassMaybePrivileged(DefaultInstanceManager.java:397 )在org.apache.catalina.core上
。 DefaultInstanceManager.newInstance(DefaultInstanceManager.java:118)
at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1048)
at org.apache.catalina.core.StandardWrapper.load( StandardWrapper.java:996)
at org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:4762)
at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java: 5045)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:140)
at org.apache.catalina.core.StandardContext.reload(StandardContext.java:3670)
at org.apache.catalina.loader.WebappLoader.backgroundProcess(WebappLoader.java:424)
at org.apache.catalina.core.ContainerBase.backgroundProcess(ContainerBase.java:1207)
at org .apache.catalina.core.ContainerBase $ ContainerBackgroundProcessor.processChildren(ContainerBase.java:1393)
at org.apache.catalina.core.ContainerBase $ ContainerBackgroundProcessor.processChildren(ContainerBase.java:1403)
at org.apache.catalina.core.ContainerBase $ ContainerBackgroundProcessor.processChildren(ContainerBase.java:1403)
at org.apache.catalina.core.ContainerBase $ ContainerBackgroundProcessor.run(ContainerBase.java:1382)
at java.lang.Thread.run(Unknown Source)
2014年2月25日上午11点11分19秒org.apache.catalina.core.StandardContext重新加载$ b $ b INFO:用名称重新装入上下文[ / UCommAdminFunctions]已完成
2014年2月25日上午11:13:33 org.apache.catalina.core.StandardWrapperValve调用
INFO:Servlet com.att.ucomm.admin.UCommAdminFunctions当前不可用
这是我的web.xml
<?xml version =1.0encoding =UTF-8?>
< web-app version =2.5
xmlns =http://java.sun.com/xml/ns/javaee
xmlns:xsi =http:// www.w3.org/2001/XMLSchema-instance
xsi:schemaLocation =http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/的JavaEE /网络app_2_5.xsd>
< servlet>
< servlet-name> com.att.ucomm.admin.UCommAdminFunctions< / servlet-name>
< servlet-class> org.glassfish.jersey.servlet.ServletContainer< / servlet-class>
<! - 如果需要,注册JAX-RS应用程序。 - >
< init-param>
< param-name> com.att.ucomm.admin.UCommAdminFunctions< / param-name>
< param-value> my.package.MyApplication< / param-value>
< / init-param>
<! - 注册my.package下的资源和提供者。 - >
< init-param>
< param-name> jersey.config.server.provider.packages< / param-name>
< param-value> com.att.ucomm.admin< / param-value>
< / init-param>
<! - 注册我的自定义提供程序(如果它位于my.package中,则不需要)AND LoggingFilter。 - >
< init-param>
< param-name> jersey.config.server.provider.classnames< / param-name>
< param-value> com.att.ucomm.admin.SecurityRequestFilter; org.glassfish.jersey.filter.LoggingFilter< / param-value>
< / init-param>
<! - 启用跟踪支持。 - >
< init-param>
< param-name> jersey.config.server.tracing< / param-name>
< param-value> ALL< / param-value>
< / init-param>
<加载启动> 1< /加载启动>
< / servlet>
< servlet-mapping>
< servlet-name> com.att.ucomm.admin.UCommAdminFunctions< / servlet-name>
< url-pattern> / rest / *< / url-pattern>
< / servlet-mapping>
< welcome-file-list>
< welcome-file> index.html< / welcome-file>
< welcome-file> index.htm< / welcome-file>
< welcome-file> index.jsp< / welcome-file>
< welcome-file> default.html< / welcome-file>
< welcome-file> default.htm< / welcome-file>
< welcome-file> default.jsp< / welcome-file>
< / welcome-file-list>
< / web-app>
我确保jersey的jar文件仍然存在于WEB-INF / lib中:
问题:
java.lang.ClassNotFoundException:org.glassfish.jersey.servlet.ServletContainer
表示您尝试使用 Jersey 2.x servlet,但是您正在提供 Jersey 1.x 库。
对于 Jersey 1.x ,您必须这样做:
< servlet>
< servlet-name> Jersey REST服务< / servlet-name>
< servlet-class>
com.sun.jersey.spi.container.servlet.ServletContainer
< / servlet-class>
< init-param>
< param-name> com.sun.jersey.config.property.packages< / param-name>
< param-value> sample.hello.resources< / param-value>
< / init-param>
<加载启动> 1< /加载启动>
< / servlet>
< servlet-mapping>
< servlet-name> Jersey REST服务< / servlet-name>
< url-pattern> / rest / *< / url-pattern>
< / servlet-mapping>
有关更多信息,请查看 Jersey 1.x文档。
如果您不想使用 Jersey 2.x ,那么您必须提供 Jersey 2.x 库。在基于maven的项目中,您可以使用以下代码:
< dependency>
< groupId> org.glassfish.jersey.containers< / groupId>
< artifactId> jersey-container-servlet< / artifactId>
< version> 2.xx< / version>
< /依赖关系>
<! - 如果您在服务器端使用Jersey客户端特定功能 - >
< dependency>
< groupId> org.glassfish.jersey.core< / groupId>
< artifactId>球衣客户端< / artifactId>
< version> 2.xx< / version>
< /依赖关系>
对于 Jersey 2.x ,您无需设置任何内容你的 web.xml
,提供一个类似于这个的类就足够了:
import javax.ws.rs.ApplicationPath;
import javax.ws.rs.core.Application;
@ApplicationPath(rest)
public class ApplicationConfig extends Application {
}
有关更多信息,请查看泽西岛文档。
另请参阅: I have been getting a ClassNotFoundException with Not sure what is going on. What's bizarre is that it just started happening last night while it was working perfectly well before that. Here is the stacktrace: Here is my web.xml I made sure that the jar files for jersey were still there in WEB-INF/lib: The problem: indicates that you try to use the Jersey 2.x servlet, but you are supplying the Jersey 1.x libs. For Jersey 1.x you have to do it like this: For more information check the Jersey 1.x documentation.
For Jersey 2.x you don't need to setup anything in your For more information, check the Jersey documentation. See also: 这篇关于org.glassfish.jersey.servlet.ServletContainer ClassNotFoundException的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
org.glassfish.jersey.servlet.ServletContainer
but it peculiarly started last night when I tried to start/re-start my Tomcat server (v7) with Eclipse Juno. Feb 25, 2014 11:11:19 AM org.apache.catalina.core.ApplicationContext log
INFO: Marking servlet com.att.ucomm.admin.UCommAdminFunctions as unavailable
Feb 25, 2014 11:11:19 AM org.apache.catalina.core.StandardContext loadOnStartup
SEVERE: Servlet /UCommAdminFunctions threw load() exception
java.lang.ClassNotFoundException: org.glassfish.jersey.servlet.ServletContainer
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1671)
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1516)
at org.apache.catalina.core.DefaultInstanceManager.loadClass(DefaultInstanceManager.java:415)
at org.apache.catalina.core.DefaultInstanceManager.loadClassMaybePrivileged(DefaultInstanceManager.java:397)
at org.apache.catalina.core.DefaultInstanceManager.newInstance(DefaultInstanceManager.java:118 )
at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1048)
at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:996)
at org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:4762)
at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5045)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:140)
at org.apache.catalina.core.StandardContext.reload(StandardContext.java:3670)
at org.apache.catalina.loader.WebappLoader.backgroundProcess(WebappLoader.java:424)
at org.apache.catalina.core.ContainerBase.backgroundProcess(ContainerBase.java:1207)
at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processChildren(ContainerBase.java:1393)
at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processChildren(ContainerBase.java:1403)
at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processChildren(ContainerBase.java:1403)
at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.run(ContainerBase.java:1382)
at java.lang.Thread.run(Unknown Source)
Feb 25, 2014 11:11:19 AM org.apache.catalina.core.StandardContext reload
INFO: Reloading Context with name [/UCommAdminFunctions] is completed
Feb 25, 2014 11:13:33 AM org.apache.catalina.core.StandardWrapperValve invoke
INFO: Servlet com.att.ucomm.admin.UCommAdminFunctions is currently unavailable
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5"
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
<servlet>
<servlet-name>com.att.ucomm.admin.UCommAdminFunctions</servlet-name>
<servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class>
<!-- Register JAX-RS Application, if needed. -->
<init-param>
<param-name>com.att.ucomm.admin.UCommAdminFunctions</param-name>
<param-value>my.package.MyApplication</param-value>
</init-param>
<!-- Register resources and providers under my.package. -->
<init-param>
<param-name>jersey.config.server.provider.packages</param-name>
<param-value>com.att.ucomm.admin</param-value>
</init-param>
<!-- Register my custom provider (not needed if it's in my.package) AND LoggingFilter. -->
<init-param>
<param-name>jersey.config.server.provider.classnames</param-name>
<param-value>com.att.ucomm.admin.SecurityRequestFilter;org.glassfish.jersey.filter.LoggingFilter</param-value>
</init-param>
<!-- Enable Tracing support. -->
<init-param>
<param-name>jersey.config.server.tracing</param-name>
<param-value>ALL</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>com.att.ucomm.admin.UCommAdminFunctions</servlet-name>
<url-pattern>/rest/*</url-pattern>
</servlet-mapping>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>index.jsp</welcome-file>
<welcome-file>default.html</welcome-file>
<welcome-file>default.htm</welcome-file>
<welcome-file>default.jsp</welcome-file>
</welcome-file-list>
</web-app>
java.lang.ClassNotFoundException: org.glassfish.jersey.servlet.ServletContainer
<servlet>
<servlet-name>Jersey REST Service</servlet-name>
<servlet-class>
com.sun.jersey.spi.container.servlet.ServletContainer
</servlet-class>
<init-param>
<param-name>com.sun.jersey.config.property.packages</param-name>
<param-value>sample.hello.resources</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>Jersey REST Service</servlet-name>
<url-pattern>/rest/*</url-pattern>
</servlet-mapping>
If you instead want to use Jersey 2.x then you'll have to supply the Jersey 2.x libs. In a maven based project you can use the following:<dependency>
<groupId>org.glassfish.jersey.containers</groupId>
<artifactId>jersey-container-servlet</artifactId>
<version>2.xx</version>
</dependency>
<!-- if you are using Jersey client specific features without the server side -->
<dependency>
<groupId>org.glassfish.jersey.core</groupId>
<artifactId>jersey-client</artifactId>
<version>2.xx</version>
</dependency>
web.xml
, it is sufficient to supply a class similar to this:import javax.ws.rs.ApplicationPath;
import javax.ws.rs.core.Application;
@ApplicationPath("rest")
public class ApplicationConfig extends Application {
}