Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/rest/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java JBoss错误报告:HTTP状态404-Servlet不可用_Java_Eclipse_Servlets_Web_Jboss5.x - Fatal编程技术网

Java JBoss错误报告:HTTP状态404-Servlet不可用

Java JBoss错误报告:HTTP状态404-Servlet不可用,java,eclipse,servlets,web,jboss5.x,Java,Eclipse,Servlets,Web,Jboss5.x,我正在尝试使用MyEclipse和JBoss 5作为应用服务器创建一个名为“web”的非常基本的web项目。我创建了一个名为“pages”的包,其中有一个名为“UserInterface”的servlet。问题是,当我部署项目并运行服务器时,总是会收到错误报告:HTTP状态404-Servlet不可用 这是my web.xml的一部分: <servlet> <servlet-name>UserInterface</servlet-name> &

我正在尝试使用MyEclipse和JBoss 5作为应用服务器创建一个名为“web”的非常基本的web项目。我创建了一个名为“pages”的包,其中有一个名为“UserInterface”的servlet。问题是,当我部署项目并运行服务器时,总是会收到错误报告:HTTP状态404-Servlet不可用

这是my web.xml的一部分:

<servlet>
    <servlet-name>UserInterface</servlet-name>
    <servlet-class>pages.UserInterface</servlet-class>
  </servlet>

  <servlet-mapping>
    <servlet-name>UserInterface</servlet-name>
    <url-pattern>/UserInterface</url-pattern>
  </servlet-mapping>

用户界面
pages.UserInterface
用户界面
/用户界面
我在浏览器中导航到:

我做错了什么

谢谢

HTTP状态404-Servlet不可用


加载servlet失败(如果servlet没有在
web.xml
中正确声明,或者URL错误,那么您应该看到“404-未找到资源”)。简单地说,
是错误的,或者具体的类文件不在
/WEB-INF/classes

404中,这意味着您试图访问的URL没有指向服务器上的现有资源。再次检查地址,可能是“web”(来自
http://localhost:8080/web/UserInterface
)部分不正确,因为可能应用程序未使用该名称部署。默认情况下,应用程序上下文名称来自“.war”文件的文件名,例如,如果您的文件是“myApp.war”,则您的应用程序应位于
http://localhost:8080/myApp

此外,如果您实际在.ear文件中部署war,则该ear文件将包含一个application.xml应用描述符,该描述符可以将您的应用程序文件映射到特定上下文,而不管.war文件名是什么,例如:

<module>
    <web>
      <web-uri>myApp.war</web-uri>
      <context-root>theApp</context-root>
    </web>
  </module>

myApp.war
西亚普

最后,如果您使用JBoss Eclipse连接器从Eclipse自动部署,有时会出现问题,实际上无法正确部署您的应用程序(即使应用程序本身很好)。如果是这样的话,请尝试手动将.war部署到应用程序服务器,并进行检查。

我仍然不知道出了什么问题,但我创建了另一个名为user的servlet,在web.xml中,我在类之前添加了/servlet,并在浏览器中导航到它(http://localhost:8080/web/servlet/User)它成功了

<servlet>
    <servlet-name>User</servlet-name>
    <servlet-class>pages.User</servlet-class>
  </servlet>

  <servlet-mapping>
    <servlet-name>User</servlet-name>
    <url-pattern>/servlet/User</url-pattern>
  </servlet-mapping>

使用者
页面。用户
使用者
/servlet/用户

谢谢大家的帮助

部署的web应用程序中的文件列表将非常有用。您是否将其部署为.war?项目是否部署为context path=web?您可以访问根localhost:8080/web吗?当服务器启动或部署应用程序时,您是否在日志或控制台输出中看到任何问题?是的,localhost:8080/web打开索引页时没有任何问题,@Santosh,没有,我已经仔细观察过了,没有异常,或者其他什么只要清除cookie即可。。会的work@Andrei:仅当由
service()
doGet()等引发时。但在这种情况下,servlet根本不可用。容器知道servlet URL映射,但手头没有有效的工作实例,因为实例化/初始化失败。嗯,是的,但我自己的蹩脚代码非常确定,例如,如果我有一个带有init()重写方法的servlet抛出一个NPE,然后访问该servlet(例如在Jetty中)将返回HTTP 500。@Andrei:OP正在使用JBoss,而不是Jetty.BalusC,这是servlet规范的工作方式。404是错误的URL,500是URL实际上映射到servlet,但该servlet由于错误/异常而无法返回响应。问这个问题的人可以随心所欲地检查他的代码,如果他输入的url不正确,即使有一个完美工作的servlet,他也会得到404。在构造函数或init()方法中引发异常。将其部署到JBoss AS。访问servlet的URL。然后访问一个不存在的URL。查看何时获得HTTP 404和何时获得HTTP 500。