Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/337.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 Tomcat使用servlet给出404错误_Java_Tomcat_Servlets_Http Status Code 404_Openjdk - Fatal编程技术网

Java Tomcat使用servlet给出404错误

Java Tomcat使用servlet给出404错误,java,tomcat,servlets,http-status-code-404,openjdk,Java,Tomcat,Servlets,Http Status Code 404,Openjdk,我使用tomcat7和oraclejdk1.7以及neatbeans7.3开发了一个javaweb应用程序。我的应用程序在本地pc上运行,没有任何错误 但是在我托管了我的应用程序之后,我无法访问servlet。它给了我404错误。在映射servlet的应用程序中,我没有使用web.xml。我使用了注释 托管服务器使用tomcat7和openjdk1.7 可能是什么问题?我怎样才能解决这个问题 新更新 我购买主机的地方给了我上传文件的cPanel。tomcat中没有上传war文件的位置,也没有上传

我使用
tomcat7
oraclejdk1.7
以及
neatbeans7.3
开发了一个javaweb应用程序。我的应用程序在本地pc上运行,没有任何错误

但是在我托管了我的应用程序之后,我无法访问servlet。它给了我
404
错误。在映射servlet的应用程序中,我没有使用
web.xml
。我使用了
注释

托管服务器使用
tomcat7
openjdk1.7

可能是什么问题?我怎样才能解决这个问题

新更新

我购买主机的地方给了我上传文件的
cPanel
。tomcat中没有上传
war
文件的位置,也没有上传文件到
webapps
director的位置。所以我把文件上传到
public\uhtml
目录。我想这可能就是问题所在。因为当我试图访问像
www.mysite.com/A
这样的servlet时,服务器会在
root
directoy中搜索它。但事实上它并不存在。因此它给出了
404
错误

我认为这可能是问题所在。有什么建议吗

已更新

注释如下所示

@WebServlet(name = "AddCustomer", urlPatterns = {"/AddCustomer"})
从下载Servlet

目录结构

检查以下各项:

  • 应用程序是否位于tomcat/webapps下面
  • 你能从tomcat经理那里看到吗
  • 日志中有错误吗
最后,可能会发布web.xml的一部分以及您调用的url

编辑

这是您的代码树,但部署到tomcat webapp目录的是什么?您编译的类是否在WEB-INF下

编辑 您是否收到了有关webapp以公共html托管的新信息?我建议您联系托管服务器提供商的资源,以了解如何正确部署—可能根本不可能

您可以尝试从Amazon获得为期一年的EC2试用版,请检查以下内容:

  • 应用程序是否位于tomcat/webapps下面
  • 你能从tomcat经理那里看到吗
  • 日志中有错误吗
最后,可能会发布web.xml的一部分以及您调用的url

编辑

这是您的代码树,但部署到tomcat webapp目录的是什么?您编译的类是否在WEB-INF下

编辑 您是否收到了有关webapp以公共html托管的新信息?我建议您联系托管服务器提供商的资源,以了解如何正确部署—可能根本不可能


在将项目部署到tomcat签入到“tomcat7\work\Catalina\localhost\your app”后,您可以尝试从Amazon获得为期一年的EC2试用版(如果该位置存在类)。如果存在类,则不应成为问题。

将项目部署到tomcat后,如果该位置存在类,请签入“tomcat7\work\Catalina\localhost\your app”。如果有类,那么就不应该是问题。

注释不能“开箱即用”,您仍然必须告诉Tomcat查找带注释的
Servlet
类。为此,您需要使用正确版本的
web.xml

<web-app 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"  
  version="3.0">

我没有使用NetBeans,但像Eclipse一样,它可能有项目属性,允许您将动态Web项目方面指定为Servlet 3.0值,该值将转换为上面显示的
Web.xml

您应该检查项目的
WEB-INF
文件夹中的
WEB.xml
或尝试正确导出它-WAR文件应该(必须)包含
WEB-INF/WEB.xml
文件

更新 您可以在
web.xml
标题中使用Servlet3.0版本来“告诉它”。对于早期版本,Tomcat不希望使用带有注释标记的servlet,也就是说,您必须在XML中手动列出它们

至于更新的问题-您得到的是404,因为Apache HTTP服务器(可能是安装的)不理解WAR或JSP文件,您需要将其配置为将请求转发到Tomcat,而Tomcat可能位于另一个端口(默认为8080)-这称为AJP或HTTP代理,也就是说,Apache服务器充当Tomcat的前端代理。在Stackoverflow这里有manny关于这个问题的答案。 您不会将WAR文件部署到
public\uHTML
,因为PHP或PerlWebApps就是在那里部署的

如果你真的安装了Tomcat,你应该向你的主机提供商询问,它安装在哪个端口,在哪里部署你的Java web应用程序。

注释不能“开箱即用”,你仍然必须告诉Tomcat查找带注释的
Servlet
类。为此,您需要使用正确版本的
web.xml

<web-app 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"  
  version="3.0">

我没有使用NetBeans,但像Eclipse一样,它可能有项目属性,允许您将动态Web项目方面指定为Servlet 3.0值,该值将转换为上面显示的
Web.xml

您应该检查项目的
WEB-INF
文件夹中的
WEB.xml
或尝试正确导出它-WAR文件应该(必须)包含
WEB-INF/WEB.xml
文件

更新 您可以在
web.xml
标题中使用Servlet3.0版本来“告诉它”。对于早期版本,Tomcat不希望使用带有注释标记的servlet,也就是说,您必须在XML中手动列出它们

至于更新的问题-您得到的是404,因为Apache HTTP服务器(可能是安装的)不理解WAR或JSP文件,您需要将其配置为将请求转发到Tomcat,而Tomcat可能位于另一个端口(默认为8080)-这称为AJP或HTTP代理,即,Apache服务器充当前端代理