2012-04-12 56 views
2

我在MyEclipse IDE中使用Tomcat服務器時遇到了一個反覆出現的問題,並帶有Struts 2框架。 我正在將我的程序作爲服務器應用程序來運行,當它運行時,默認的index.jsp文件將成功打開,但其他應用程序的其他任何應用程序都不會運行。 當試圖加載我的任何.do頁面時,出現以下錯誤: HTTP狀態404:請求的資源....不可用。 當我以前遇到這個錯誤時,我剛剛重新啓動服務器,一切都很好,但我現在沒有同樣的運氣。HTTP狀態404 - 請求的資源不可用

下面是我在運行時從控制檯登錄的日誌。

Apr 12, 2012 10:49:35 AM org.apache.catalina.core.AprLifecycleListener init 
INFO: The Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: C:\Program Files\MyEclipse\Common\binary\com.sun.java.jdk.win32.x86_1.6.0.013\bin;C:\Program Files\MyEclipse\Common\plugins\com.genuitec.eclipse.easie.tomcat.myeclipse_9.0.0.me201109141806\tomcat\bin 
Apr 12, 2012 10:49:35 AM org.apache.coyote.http11.Http11Protocol init 
INFO: Initializing Coyote HTTP/1.1 on http-8080 
Apr 12, 2012 10:49:35 AM org.apache.catalina.startup.Catalina load 
INFO: Initialization processed in 285 ms 
Apr 12, 2012 10:49:35 AM org.apache.catalina.core.StandardService start 
INFO: Starting service Catalina 
Apr 12, 2012 10:49:35 AM org.apache.catalina.core.StandardEngine start 
INFO: Starting Servlet Engine: Apache Tomcat/6.0.13 
Apr 12, 2012 10:49:35 AM org.apache.catalina.loader.WebappClassLoader validateJarFile 
INFO: validateJarFile(C:\Documents and Settings\username\My Documents\Workspaces\.metadata\.me_tcat\webapps\project-name\WEB-INF\lib\javax.servlet-3.0.1.jar) - jar not loaded. See Servlet Spec 2.3, section 9.7.2. Offending class: javax/servlet/Servlet.class 
log4j:WARN No appenders could be found for logger (com.opensymphony.xwork2.config.providers.XmlConfigurationProvider). 
log4j:WARN Please initialize the log4j system properly. 
Apr 12, 2012 10:49:37 AM org.apache.coyote.http11.Http11Protocol start 
INFO: Starting Coyote HTTP/1.1 on http-8080 
Apr 12, 2012 10:49:37 AM org.apache.jk.common.ChannelSocket init 
INFO: JK: ajp13 listening on /0.0.0.0:8009 
Apr 12, 2012 10:49:37 AM org.apache.jk.server.JkMain start 
INFO: Jk running ID=0 time=0/16 config=null 
Apr 12, 2012 10:49:37 AM org.apache.catalina.startup.Catalina start 
INFO: Server startup in 1720 ms 

有什麼建議嗎?

回答

2

我看不出有什麼理由在您的類路徑中添加javax.servlet-3.0.1.jar。由於您使用Eclipse來構建/運行應用程序,所以當您將tomcat或任何服務器作爲運行時env添加到項目時,這些庫依賴關係將自動添加到類路徑。簡單地從您的項目的lib文件夾中刪除此jar。對此也可能有其他原因。

  1. javax.servlet-3.0.1.jar已作爲運行時庫(在.WAR中)添加 - 並且只在編譯期間需要它。
  2. 從WEB-INF/lib中刪除jar,並更新您的構建腳本以指向新的位置。

the Servlet Spec 2.3, section 9.7.2 being referred to says that the Servlet Container (E.g. Tomcat) will supply the implementation class of the J2EE spec. The j2ee.jar (servlet-api.jar in our case?) in your WEB-INF/lib directory is trying to supply the same info. Having application specific implementations is a stability and security problem that is disallowed by the spec 2.3 and by Tomcat.

總之從lib文件夾中刪除的javax.servlet-3.0.1.jar而讓容器採取你提供這些依賴護理。

要聲明這是由與Maven容器提供一個依賴範圍設置爲「提供」這裏是在你的pom.xml的條目應該如何看一個例子:

<dependency> 
     <groupId>javax</groupId> 
     <artifactId>javaee-web-api</artifactId> 
     <version>6.0</version> 
     <scope>provided</scope> 
    </dependency> 
+0

我不是很確定你的意思。我嘗試從控制檯指定的位置手動刪除文件,但是當您運行程序時,文件會自動再次創建。我在這裏做錯了什麼? – Saladin 2012-04-12 18:40:18

+1

@Saladin你從myeclipse中的java構建路徑中刪除它。 – 2012-04-12 18:48:29

+1

@Umesh添加了maven示例,因爲它解決了具體問題,只是您已經提到的實現細節。 – Quaternion 2012-04-12 21:46:54

相關問題