gpt4 book ai didi

java - 在 mac 上的 eclipse helios 和 tomcat 7 中,这个 servlet 哪里出错了?

转载 作者:行者123 更新时间:2023-11-30 09:48:30 25 4
gpt4 key购买 nike

我正在尝试使用 eclipse helios ee 和 tomcat 7 创建一个基本的 servlet。我可以看到 tomcat 工作正常,因为我可以从 eclipse 启动服务器,将我的浏览器指向 localhost:8080,它会显示欢迎页面。

因此,我使用动态 Web 项目向导创建了一个 servlet,但在尝试查看它时出现 404。我还可以看到在 WEB-INF 目录中没有它的 web.xml 文件。 eclipse 应该自动创建它还是我必须做的事情?在我看过的所有教程中,似乎 web.xml 是自动创建的?

感谢您的帮助 - 抱歉这个问题有点含糊 - 我不确定从哪里开始寻找解决方案..

谢谢!

编辑:我试过手动创建一个 web.xml 文件。我可以看到它在服务器看到它的正确位置(我认为):

/Users/bw/Documents/workspace2/.metadata/.plugins/org.eclipse.wst.server.core/tmp0/wtpwebapps/HelloWorld/WEB-INF/web.xml

文件看起来像这样:

<web-app xmlns="http://java.sun.com/xml/ns/j2ee" version="2.4"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http:/java.sun.com/dtd/web-app_2_3.dtd">
<servlet>
<servlet-name>hello</servlet-name>
<servlet-class>mytest.HelloWorld</servlet-class>
</servlet>

<servlet-mapping>
<servlet-name>hello</servlet-name>
<url-pattern>/hello</url-pattern>
</servlet-mapping>
</web-app>

编辑:Catalina 日志如下所示:

Jun 1, 2011 11:37:56 AM org.apache.catalina.core.AprLifecycleListener init
INFO: The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: .:/Library/Java/Extensions:/System/Library/Java/Extensions:/usr/lib/java
Jun 1, 2011 11:37:56 AM org.apache.tomcat.util.digester.SetPropertiesRule begin
WARNING: [SetPropertiesRule]{Server/Service/Engine/Host/Context} Setting property 'source' to 'org.eclipse.jst.jee.server:HelloWorld' did not find a matching property.
Jun 1, 2011 11:37:56 AM org.apache.coyote.AbstractProtocolHandler init
INFO: Initializing ProtocolHandler ["http-bio-8080"]
Jun 1, 2011 11:37:56 AM org.apache.coyote.AbstractProtocolHandler init
INFO: Initializing ProtocolHandler ["ajp-bio-8009"]
Jun 1, 2011 11:37:56 AM org.apache.catalina.startup.Catalina load
INFO: Initialization processed in 1154 ms
Jun 1, 2011 11:37:56 AM org.apache.catalina.core.StandardService startInternal
INFO: Starting service Catalina
Jun 1, 2011 11:37:56 AM org.apache.catalina.core.StandardEngine startInternal
INFO: Starting Servlet Engine: Apache Tomcat/7.0.14
Jun 1, 2011 11:37:57 AM org.apache.coyote.AbstractProtocolHandler start
INFO: Starting ProtocolHandler ["http-bio-8080"]
Jun 1, 2011 11:37:57 AM org.apache.coyote.AbstractProtocolHandler start
INFO: Starting ProtocolHandler ["ajp-bio-8009"]
Jun 1, 2011 11:37:57 AM org.apache.catalina.startup.Catalina start
INFO: Server startup in 583 ms

编辑:

尝试从服务器上删除应用程序并得到这个:

Jun 1, 2011 12:03:28 PM org.apache.catalina.loader.WebappClassLoader modified
SEVERE: Resource '/WEB-INF/classes/mytest/HelloWorld.class' is missing Jun 1, 2011 12:03:28 PM org.apache.catalina.core.StandardContext reload
INFO: Reloading Context with name [/HelloWorld] has started
Jun 1, 2011 12:03:29 PM org.apache.catalina.core.StandardContext resourcesStart
SEVERE: Error starting static Resources
java.lang.IllegalArgumentException: Document base /Users/bw/Documents/workspace2/.metadata/.plugins/org.eclipse.wst.server.core/tmp0/wtpwebapps/HelloWorld does not exist or is not a readable directory
at org.apache.naming.resources.FileDirContext.setDocBase(FileDirContext.java:140)
at org.apache.catalina.core.StandardContext.resourcesStart(StandardContext.java:4836)
at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5016)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:145)
at org.apache.catalina.core.StandardContext.reload(StandardContext.java:3854)
at org.apache.catalina.loader.WebappLoader.backgroundProcess(WebappLoader.java:424)
at org.apache.catalina.core.ContainerBase.backgroundProcess(ContainerBase.java:1205)
at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processChildren(ContainerBase.java:1391)
at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processChildren(ContainerBase.java:1401)
at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processChildren(ContainerBase.java:1401)
at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.run(ContainerBase.java:1380)
at java.lang.Thread.run(Thread.java:637)
Jun 1, 2011 12:03:29 PM org.apache.catalina.core.StandardContext startInternal
SEVERE: Error in resourceStart()
Jun 1, 2011 12:03:29 PM org.apache.catalina.core.StandardContext startInternal
SEVERE: Error getConfigured
Jun 1, 2011 12:03:29 PM org.apache.catalina.core.StandardContext startInternal
SEVERE: Context [/HelloWorld] startup failed due to previous errors
Jun 1, 2011 12:03:29 PM org.apache.catalina.util.LifecycleBase stop
INFO: The stop() method was called on component [Pipeline[StandardEngine[Catalina].StandardHost[localhost].StandardContext[/HelloWorld]]] after stop() had already been called. The second call will be ignored.
Jun 1, 2011 12:03:29 PM org.apache.catalina.util.LifecycleBase stop
INFO: The stop() method was called on component [WebappLoader[/HelloWorld]] after stop() had already been called. The second call will be ignored.
Jun 1, 2011 12:03:29 PM org.apache.catalina.core.StandardContext reload
INFO: Reloading Context with name [/HelloWorld] is completed

看起来这些类没有从构建目录复制到服务器区域?

编辑:

啊哈!终于找到问题了。好吧,可能有几件事。

1) 我尝试删除服务器,然后创建一个新服务器,然后添加 servlet。看起来它可能已经弄糊涂了,没有将必要的文件复制到服务器区域。

2) Eclipse 为我提供了错误的用于查看 servlet 的 url。我正在查看/hello,我需要查看 HelloWorld/hello - 看起来 Eclipse 在建议 servlet 的 url 时可能不包含上下文?

当我更清楚地知道出了什么问题时,我会回复..

感谢大家的帮助!

最佳答案

需要有一个映射到您创建的 Servlet 的 URL。如果您使用向导,它应该已经自动创建了。你试过了吗creating and entering it在 web.xml 文件中?

编辑:您是否尝试过删除您的工作区或重命名并尝试使用一个新工作区?如果这不起作用,那么您可以看看如何 create web.xml files自己。

编辑:如果您通过错误的 URL 访问它,那肯定会导致 404 错误。如果您在 eclipse 中运行项目,web.xml 文件中的 URL 将映射到 example.com/project_name/servlet。

您甚至可以创建 custom 404 pages并显示比现在显示的更多或更少的信息,或者只是让它看起来不同。

关于java - 在 mac 上的 eclipse helios 和 tomcat 7 中,这个 servlet 哪里出错了?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6205502/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com