Java Tomcat的JAX-RS异常

Java Tomcat的JAX-RS异常,java,rest,jakarta-ee,tomcat,Java,Rest,Jakarta Ee,Tomcat,启动servlet(从eclipse)时,我遇到以下错误: 它是Tomcat7,servlet是REST INFO: validateJarFile(C:\beezer\WebServerWorkspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\BeezerServer\WEB-INF\lib\geronimo-j2ee_1.4_spec-1.1.jar) - jar not loaded. See Serv

启动servlet(从eclipse)时,我遇到以下错误: 它是Tomcat7,servlet是REST

INFO: validateJarFile(C:\beezer\WebServerWorkspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\BeezerServer\WEB-INF\lib\geronimo-j2ee_1.4_spec-1.1.jar) - jar not loaded. See Servlet Spec 2.3, section 9.7.2. Offending class: javax/servlet/Servlet.class
448 [localhost-startStop-1] ERROR org.apache.wink.server.internal.servlet.RestServlet - com.test.AddressBookApplication<br />
java.lang.ClassNotFoundException: com.test.AddressBookApplication<br />
    at
org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1711)<br/>
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1556)<br/>
    at java.lang.Class.forName0(Native Method)<br/>
    at java.lang.Class.forName(Class.java:169)<br/>
    at org.apache.wink.server.internal.servlet.RestServlet.getApplication(RestServlet.java:144)<br/>
    at org.apache.wink.server.internal.servlet.RestServlet.createRequestProcessor(RestServlet.java:105)<br/>
    at org.apache.wink.server.internal.servlet.RestServlet.init(RestServlet.java:81)<br/>
    at javax.servlet.GenericServlet.init(GenericServlet.java:160)<br/>
    at org.apache.catalina.core.StandardWrapper.initServlet(StandardWrapper.java:1266)<br/>
    at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1185)<br/>
    at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:1080)<br/>
    at org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:5027)<br/>
    at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5314)<br/>
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)<br/>
    at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1559)<br/>
    at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1549)<br/>
    at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)<br/>
    at java.util.concurrent.FutureTask.run(FutureTask.java:138)<br/>
    at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)<br/>
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)<br/>
    at java.lang.Thread.run(Thread.java:662)<br/>
Aug 30, 2012 7:49:41 PM org.apache.catalina.core.ApplicationContext log<br/>
INFO: Marking servlet JAX-RS Servlet as unavailable<br/>
Aug 30, 2012 7:49:41 PM org.apache.catalina.core.StandardContext loadOnStartup<br/>
SEVERE: Servlet /BeezerServer threw load() exception<br/>
javax.servlet.UnavailableException: com.test.AddressBookApplication<br/>
    at org.apache.wink.server.internal.servlet.RestServlet.init(RestServlet.java:91)<br/>
    at javax.servlet.GenericServlet.init(GenericServlet.java:160)<br/>
    at org.apache.catalina.core.StandardWrapper.initServlet(StandardWrapper.java:1266)<br/>
    at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1185)<br/>
    at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:1080)<br/>
    at org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:5027)<br/>
    at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5314)<br/>
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)<br/>
    at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1559)<br/>
    at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1549)<br/>
    at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)<br/>
    at java.util.concurrent.FutureTask.run(FutureTask.java:138)<br/>
    at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)<br/>
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)<br/>
    at java.lang.Thread.run(Thread.java:662)<br/>
Aug 30, 2012 7:49:41 PM org.apache.coyote.AbstractProtocol start
INFO: Starting ProtocolHandler ["http-bio-8080"]
INFO:validateJarFile(C:\beezer\WebServerWorkspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\BeezerServer\WEB-INF\lib\geronimo-j2ee\u 1.4\u spec-1.1.jar)-未加载jar。参见Servlet规范2.3,第9.7.2节。有问题的类:javax/servlet/servlet.class
448[localhost-startStop-1]错误org.apache.wink.server.internal.servlet.RestServlet-com.test.AddressBookApplication
java.lang.ClassNotFoundException:com.test.AddressBookApplication
在 org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1711)
位于org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1556)
在java.lang.Class.forName0(本机方法)
在java.lang.Class.forName(Class.java:169)上
位于org.apache.wink.server.internal.servlet.RestServlet.getApplication(RestServlet.java:144)
位于org.apache.wink.server.internal.servlet.RestServlet.createRequestProcessor(RestServlet.java:105)
位于org.apache.wink.server.internal.servlet.RestServlet.init(RestServlet.java:81)
位于javax.servlet.GenericServlet.init(GenericServlet.java:160)
位于org.apache.catalina.core.StandardWrapper.initServlet(StandardWrapper.java:1266)
位于org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1185)
位于org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:1080)
位于org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:5027)
位于org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5314)
位于org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
位于org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1559)
位于org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1549)
在java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
在java.util.concurrent.FutureTask.run(FutureTask.java:138)处
位于java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
位于java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
在java.lang.Thread.run(Thread.java:662)
2012年8月30日晚上7:49:41 org.apache.catalina.core.ApplicationContext日志
信息:将servlet JAX-RS servlet标记为不可用
2012年8月30日下午7:49:41 org.apache.catalina.core.StandardContext loadOnStartup
严重:Servlet/BeezerServer引发load()异常
javax.servlet.UnavailableException:com.test.AddressBookApplication
位于org.apache.wink.server.internal.servlet.RestServlet.init(RestServlet.java:91)
位于javax.servlet.GenericServlet.init(GenericServlet.java:160)
位于org.apache.catalina.core.StandardWrapper.initServlet(StandardWrapper.java:1266)
位于org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1185)
位于org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:1080)
位于org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:5027)
位于org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5314)
位于org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
位于org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1559)
位于org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1549)
在java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
在java.util.concurrent.FutureTask.run(FutureTask.java:138)处
位于java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
位于java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
在java.lang.Thread.run(Thread.java:662)
2012年8月30日晚上7:49:41 org.apache.coyote.AbstractProtocol开始 信息:正在启动ProtocolHandler[“http-bio-8080”]
myweb.XML:

<?xml version="1.0" encoding="UTF-8"?><br/> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee<br/> http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" version="3.0">
  <display-name>BeezerServer</display-name>
    <servlet>
      <description>JAX-RS Tools Generated - Do not modify</description>
      <servlet-name>JAX-RS Servlet</servlet-name>
      <servlet-class>org.apache.wink.server.internal.servlet.RestServlet</servlet-class>
      <init-param>
        <param-name>javax.ws.rs.Application</param-name>
        <param-value>com.test.AddressBookApplication</param-value>
      </init-param>
      <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
      <servlet-name>JAX-RS Servlet</servlet-name>
      <url-pattern>/jaxrs/*</url-pattern>
    </servlet-mapping>

啤酒服务器 生成JAX-RS工具-不修改 JAX-RSservlet org.apache.wink.server.internal.servlet.RestServlet javax.ws.rs.Application com.test.AddressBookApplication 1. JAX-RSservlet /jaxrs/*

有人有线索吗?
谢谢

首先检查该类是否确实存在。检查类名和包。它属于web项目还是从属项目

如果一切正常,刷新project,然后运行project/Clean,然后Clean并重新发布tomcat。若它不能工作,那个么再次创建服务器(我的意思是在eclipse中)。如果仍然不起作用,请转到
C:\beezer\WebServerWorkspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\BeezerServer\WEB-INF\classes
(路径取自日志)并检查类文件是否存在


祝你好运,欢迎来到花了一夜时间与tomcat for eclipse插件中的漏洞进行斗争的俱乐部…

摆脱
C:\beezer\WebServerWorkspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\BeezerServer\WEB-INF\lib\geronimo-j2ee\u spec-1.1.jar
它包含Servlet.java类,这应该由AS本身提供。如果您使用的是Maven,请将依赖项标记为已提供(
已提供

顺便说一句,编译仍然需要jar,但运行时不需要


编辑:哦,现在我注意到了,这只是日志中的信息。因此,这不是问题的根源,根本原因是
ClassNotFound
ex。确保类位于类路径上。

这些答案中有没有解决您的问题?