Исключение JAX-RS с Tomcat

При запуске сервлета (из затмения) возникает следующая ошибка: Это tomcat 7, а сервлет - 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
java.lang.ClassNotFoundException: com.test.AddressBookApplication
 at
org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1711)
 at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1556)
 at java.lang.Class.forName0(Native Method)
 at java.lang.Class.forName(Class.java:169)
 at org.apache.wink.server.internal.servlet.RestServlet.getApplication(RestServlet.java:144)
 at org.apache.wink.server.internal.servlet.RestServlet.createRequestProcessor(RestServlet.java:105)
 at org.apache.wink.server.internal.servlet.RestServlet.init(RestServlet.java:81)
 at javax.servlet.GenericServlet.init(GenericServlet.java:160)
 at org.apache.catalina.core.StandardWrapper.initServlet(StandardWrapper.java:1266)
 at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1185)
 at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:1080)
 at org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:5027)
 at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5314)
 at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
 at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1559)
 at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1549)
 at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
 at java.util.concurrent.FutureTask.run(FutureTask.java:138)
 at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
 at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
 at java.lang.Thread.run(Thread.java:662)
Aug 30, 2012 7:49:41 PM org.apache.catalina.core.ApplicationContext log
INFO: Marking servlet JAX-RS Servlet as unavailable
Aug 30, 2012 7:49:41 PM org.apache.catalina.core.StandardContext loadOnStartup
SEVERE: Servlet /BeezerServer threw load() exception
javax.servlet.UnavailableException: com.test.AddressBookApplication
 at org.apache.wink.server.internal.servlet.RestServlet.init(RestServlet.java:91)
 at javax.servlet.GenericServlet.init(GenericServlet.java:160)
 at org.apache.catalina.core.StandardWrapper.initServlet(StandardWrapper.java:1266)
 at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1185)
 at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:1080)
 at org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:5027)
 at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5314)
 at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
 at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1559)
 at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1549)
 at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
 at java.util.concurrent.FutureTask.run(FutureTask.java:138)
 at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
 at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
 at java.lang.Thread.run(Thread.java:662)
Aug 30, 2012 7:49:41 PM org.apache.coyote.AbstractProtocol start
INFO: Starting ProtocolHandler ["http-bio-8080"]

Мой web.XML:

<!--?xml version="1.0" encoding="UTF-8"?--> <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>
</web-app>

Есть ли кто-нибудь? спасибо!

2 ответа

Сначала проверьте, действительно ли этот класс существует. Проверьте имя и пакет класса. Это принадлежит веб-проекту или зависимому проекту?

Если все в порядке, обновите проект, затем запустите Project/Clean, затем очистите и повторно опубликуйте tomcat. Если он не работает, снова создайте сервер (я имею в виду в eclipse). Если он все еще не работает, перейдите в C:\beezer\WebServerWorkspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\BeezerServer\WEB-INF\classes (путь берется из вашего журнала) и проверьте, есть ли файл класса.

Удачи и добро пожаловать в клуб людей, которые проводят ночную борьбу с ошибками в плагине кота для затмения...


Избавиться от C:\beezer\WebServerWorkspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\BeezerServer\WEB-INF\lib\geronimo-j2ee_1.4_spec-1.1.jar Он содержит класс Servlet.java, который должен предоставляться самой AS. Если вы используете Maven, отметьте зависимость, как указано (<scope>provided</scope>)

Btw. банку все еще необходимо для компиляции, но не во время выполнения.

EDIT: О, теперь я заметил, это только INFO в журнале. Так что это не источник проблемы, основной причиной является ClassNotFound ex. Убедитесь, что класс находится в пути к классам.

licensed under cc by-sa 3.0 with attribution.