2014-07-10 142 views
0

我無法在tomcat8服務器上啓動我的測試應用程序。當我輸入http://localhost:8080/loginService/rest/auth時,錯誤消息是「HTTP狀態404 - 」類型狀態報告消息:說明請求的資源不可用。「 而起始頁面​​工作正常。 我把所有的jar文件(jersey-client,jersey-common,jersey-container-servlet,jersey-container-servlet-core,jersey-server,javax.ws.rs-api-2.0 ....)放在WEB-INF/lib目錄下。並且loginService由服務器部署。HTTP狀態404請求的資源不可用球衣tomcat

下的web.xml文件WEB-INF

<?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 
    http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" 
    version="2.5"> 
    <display-name>loginService</display-name> 
    <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>loginTest</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> 
</web-app> 

我的測試應用程序:

package loginTest; 
import javax.ws.rs.GET; 
import javax.ws.rs.Path; 
import javax.ws.rs.Produces; 
import javax.ws.rs.core.MediaType; 
@Path("/auth") 
public class Authenticate { 
// This method is called if TEXT_PLAIN is request 
     @GET 
     @Produces(MediaType.TEXT_PLAIN) 
     public String test() { 
      return "succes"; 
     } 
} 

這裏是控制檯味精這似乎是一個問題的一部分:

七月 10, 2014 3:06:20 下午 org.apache.catalina.core.StandardContext reload 
嚴重: Exception starting Context with name [/loginService] 
org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].StandardHost[localhost].StandardContext[/loginService]] 
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:154) 
    at org.apache.catalina.core.StandardContext.reload(StandardContext.java:3780) 
    at org.apache.catalina.loader.WebappLoader.backgroundProcess(WebappLoader.java:293) 
    at org.apache.catalina.core.StandardContext.backgroundProcess(StandardContext.java:5539) 
    at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processChildren(ContainerBase.java:1365) 
    at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processChildren(ContainerBase.java:1369) 
    at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processChildren(ContainerBase.java:1369) 
    at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.run(ContainerBase.java:1345) 
    at java.lang.Thread.run(Unknown Source) 
Caused by: java.lang.NoClassDefFoundError: jersey/repackaged/com/google/common/base/Function 
    at org.glassfish.jersey.internal.ServiceFinder.<clinit>(ServiceFinder.java:165) 
    at org.glassfish.jersey.servlet.internal.ServletContainerProviderFactory.getAllServletContainerProviders(ServletContainerProviderFactory.java:66) 
    at org.glassfish.jersey.servlet.init.JerseyServletContainerInitializer.onStartup(JerseyServletContainerInitializer.java:132) 
    at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5173) 
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150) 
    ... 8 more 
Caused by: java.lang.ClassNotFoundException: jersey.repackaged.com.google.common.base.Function 
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1324) 
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1177) 
    ... 13 more 

七月 10, 2014 3:06:20 下午 org.apache.catalina.core.StandardContext reload 
信息: Reloading Context with name [/loginService] is completed 

而我正在使用tomcat8和jersey2.10.1。

我只是改變了我的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  
     http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" 
     version="2.5"> 
    <display-name>loginService</display-name> 
    <servlet> 
    <servlet-name>Jersey REST Service</servlet-name> 
    <servlet-class>org.glassfish.jersey.spi.container.servlet.ServletContainer</servlet-class> 
    <init-param> 
     <param-name>jersey.config.server.provider.packages</param-name> 
     <param-value>loginTest</param-value> 
    </init-param> 
    <init-param> 
     <param-name>com.sun.jersey.api.json.POJOMappingFeature</param-name> 
     <param-value>true</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> 
</web-app> 
+0

確保您已將Jersey Jar文件保存在WEB-INF> lib文件夾中? – Anirudh

+0

我注意到的第一件事: 「com.sun.jersey.spi.container.servlet.ServletContainer」是澤西1.X不澤西2。 – BlackEye

回答

2

好像你的應用程序缺少一些必要的庫或(既然你已經有了jercy-common.jar)有不兼容在類路徑中的庫中。

因此,我想指出一個完美的工作(測試與Tomcat 8)示例在下面的鏈接。

Jersey-HelloWorld-Example

希望這有助於。

0

我有這個問題。我只是通過刪除所有的web.xml文件(「目標」文件夾和「主」文件夾內)來解決它。然後右鍵單擊項目資源管理器中的項目和Java EE工具 - >生成部署描述符存根。之後,再次右鍵單擊該項目 - > run as - > Maven build ...然後在「Goals」字段中輸入:「clean install」(不帶引號)。點擊應用,然後點擊運行。然後轉到Tomcat管理器,取消部署舊的.war文件並再次部署。然後運行它!它爲我工作。

0

根據此鏈接https://www3.ntu.edu.sg/home/ehchua/programming/howto/Tomcat_HowTo.html#TomcatDebug,這種問題發生的原因很多。另外,我之前經歷過這個問題。我通過以下方式解決了這個問題。查看tomcat/webapps/ROOT/WEB-INF/web.xml中的web.xml標題。並確保你的web.xml看起來像這樣。特別嘗試比較版本。例如: 我的是:

<?xml version="1.0" encoding="ISO-8859-1"?> 
<web-app version="3.0" 
    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_3_0.xsd"> 
........ 
.......... 
</web-app> 

您安裝,可就是這樣的Tomcat的版本:

<?xml version="1.0" encoding="ISO-8859-1"?> 
<web-app version="4.0" 
    metadata-complete="true" 
    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_4_0.xsd"> 
........ 
.......... 
</web-app> 

如果你看一下他們兩個版本有差異,元數據屬性的區別。因此,您的web.xml和tomcat/webapps/ROOT/WEB-INF/web.xml的標頭必須相同。通過更改我的web.xml頭中的版本號爲4解決了我的問題。無論您有什麼版本,請確保它與ROOT的web.xml版本相同。希望它有幫助

相關問題