Java HTTP状态404-请求的资源不可用

Java HTTP状态404-请求的资源不可用,java,tomcat,struts2,myeclipse,Java,Tomcat,Struts2,Myeclipse,在使用MyEclipse IDE中的Tomcat服务器和Struts 2框架时,我遇到了一个反复出现的问题。 我正在以服务器应用程序的形式运行我的程序,当它运行默认index.jsp文件时,它将成功打开,但应用程序的其他过去都无法工作。 尝试加载任何my.do页面时,我会出现以下错误: HTTP状态404:请求的资源。。。。没有。 当我之前遇到这个错误时,我只是重新启动了服务器,一切都很好,但我现在没有那么幸运了 这是我点击run时控制台上的日志 Apr 12, 2012 10:49:35 AM

在使用MyEclipse IDE中的Tomcat服务器和Struts 2框架时,我遇到了一个反复出现的问题。 我正在以服务器应用程序的形式运行我的程序,当它运行默认index.jsp文件时,它将成功打开,但应用程序的其他过去都无法工作。 尝试加载任何my.do页面时,我会出现以下错误: HTTP状态404:请求的资源。。。。没有。 当我之前遇到这个错误时,我只是重新启动了服务器,一切都很好,但我现在没有那么幸运了

这是我点击run时控制台上的日志

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

有什么建议吗?

我看不出有任何理由在类路径中添加
javax.servlet-3.0.1.jar
。因为您使用Eclipse构建/运行应用程序,因此,当您将tomcat或任何服务器作为运行时环境添加到项目中时,这些库依赖项将自动添加到类路径中。这可能还有其他原因

  • javax.servlet-3.0.1.jar被添加为运行时库(在.WAR中)——它只在构建时需要
  • 从WEB-INF/lib中删除jar,并更新构建脚本以指向新位置
  • 提到的Servlet Spec 2.3第9.7.2节说Servlet容器(例如Tomcat)将提供J2EE规范的实现类。您的WEB-INF/lib目录中的J2EE.jar(在本例中是Servlet-api.jar?)正试图提供相同的信息。拥有特定于应用程序的实现是一个稳定性和安全性问题,这是SPEC2.3和Tomcat所不允许的

    简而言之,从lib文件夹中删除javax.servlet-3.0.1.jar,让容器为您提供这些依赖项

    要声明由容器maven提供的依赖项,请将作用域设置为“provided”,下面是pom.xml中条目的外观示例:

        <dependency>
            <groupId>javax</groupId>
            <artifactId>javaee-web-api</artifactId>
            <version>6.0</version>
            <scope>provided</scope>
        </dependency>
    
    
    爪哇
    javaeewebapi
    6
    假如
    
    我不太清楚你的意思。我尝试从控制台指定的位置手动删除该文件,但当您运行该程序时,该文件将再次自动创建。我做错了什么?@Saladin您将其从myeclipse中的java构建路径中删除。@Umesh添加了maven示例,因为它解决了具体问题,只是您所说的实现细节。