2

我一直在关注vogella.com的 Eclipse WTP 的 Servlet 和 JSP 开发。我已经安装了 Tomcat 7,复制粘贴了代码(一个简单的数据访问对象和一个简单的 HpptServlet),然后从 eclipse 启动了服务器。

当我http://localhost:8080/de.vogella.wtp.filecounter/FileCounter在网络上打开时,预期的结果是:

在此处输入图像描述

但我收到了 404 错误:

在此处输入图像描述

这个错误日志在控制台中:

Sep 15, 2013 7:27:09 PM 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: /Users/adamatan/Library/Java/Extensions:/Library/Java/Extensions:/Network/Library/Java/Extensions:/System/Library/Java/Extensions:/usr/lib/java:.
Sep 15, 2013 7:27:09 PM org.apache.tomcat.util.digester.SetPropertiesRule begin
WARNING: [SetPropertiesRule]{Server/Service/Engine/Host/Context} Setting property 'source' to 'org.eclipse.jst.jee.server:de.vogella.wtp.filecounter' did not find a matching property.
Sep 15, 2013 7:27:09 PM org.apache.coyote.AbstractProtocol init
INFO: Initializing ProtocolHandler ["http-bio-8080"]
Sep 15, 2013 7:27:09 PM org.apache.coyote.AbstractProtocol init
INFO: Initializing ProtocolHandler ["ajp-bio-8009"]
Sep 15, 2013 7:27:09 PM org.apache.catalina.startup.Catalina load
INFO: Initialization processed in 525 ms
Sep 15, 2013 7:27:09 PM org.apache.catalina.core.StandardService startInternal
INFO: Starting service Catalina
Sep 15, 2013 7:27:09 PM org.apache.catalina.core.StandardEngine startInternal
INFO: Starting Servlet Engine: Apache Tomcat/7.0.42
Sep 15, 2013 7:27:09 PM org.apache.catalina.core.StandardContext resourcesStart
SEVERE: Error starting static Resources
java.lang.IllegalArgumentException: Document base /Users/adamatan/Personal/workspace/.metadata/.plugins/org.eclipse.wst.server.core/tmp0/wtpwebapps/de.vogella.wtp.filecounter does not exist or is not a readable directory
    at org.apache.naming.resources.FileDirContext.setDocBase(FileDirContext.java:138)
    at org.apache.catalina.core.StandardContext.resourcesStart(StandardContext.java:5055)
    at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5235)
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
    at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1559)
    at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1549)
    at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334)
    at java.util.concurrent.FutureTask.run(FutureTask.java:166)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
    at java.lang.Thread.run(Thread.java:724)

Sep 15, 2013 7:27:09 PM org.apache.catalina.core.StandardContext startInternal
SEVERE: Error in resourceStart()
Sep 15, 2013 7:27:09 PM org.apache.catalina.core.StandardContext startInternal
SEVERE: Error getConfigured
Sep 15, 2013 7:27:09 PM org.apache.catalina.core.StandardContext startInternal
SEVERE: Context [/de.vogella.wtp.filecounter] startup failed due to previous errors
Sep 15, 2013 7:27:09 PM org.apache.coyote.AbstractProtocol start
INFO: Starting ProtocolHandler ["http-bio-8080"]
Sep 15, 2013 7:27:09 PM org.apache.coyote.AbstractProtocol start
INFO: Starting ProtocolHandler ["ajp-bio-8009"]
Sep 15, 2013 7:27:09 PM org.apache.catalina.startup.Catalina start
INFO: Server startup in 255 ms

相关信息:

  • Tomcat 从命令行 ( catalina run) 运行正常。
  • 只有一个 Tomcat 实例同时运行。
  • 我无法从 Eclipse 运行任何其他 Tomcat servlet。

知道为什么 tomcat 不运行我的简单 Servlet 吗?

更新:我正在使用 OSX

4

2 回答 2

2

我怀疑您正在使用自己的用户运行 tomcat - 这是 unix 系统中的常见做法 - 并且该用户没有对您的主目录的读取权限/Users/adamatan

然后您可以尝试将您的用户所属的组添加到您的tomcat用户。

最好尝试按照此问题中的描述将服务器位置更改为 eclipse 具有写访问权限且 tomcat 用户具有读访问权限的位置。

编辑

实际上它是Dynamic Web Project向导中的一个设置,如果您Dynamic web module version 3.0在第一页上选择(默认值)或更高,则在最后一页上Generate web.xml deployment descriptor,默认情况下禁用复选框。如果您选择 2.5 或更低版本,则默认启用。它与您实际使用的 tomcat 无关。如果你想使用注释,那么你必须拥有带有 servlet 规范 3.0 的 tomcat 7

于 2013-09-15T18:58:36.590 回答
0

这是一个 Tomcat 6 教程,我使用的是 Tomcat 7。

Eclipse 没有创建web.xml文件,因为它需要 Java 代码中的注释。教程代码不包含任何注释,因此服务器在没有 servlet 的情况下启动。

于 2013-09-16T08:06:07.327 回答