【问题标题】:Simple Tomcat Servlet not loaded in EclipseEclipse 中未加载简单的 Tomcat Servlet
【发布时间】:2013-09-19 21:40:44
【问题描述】:

我一直在关注来自 vogella.com 的 Servlet and JSP development with Eclipse WTP。我已经安装了 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

【问题讨论】:

  • 请看link
  • @study 现在链接失效了。

标签: eclipse macos tomcat eclipse-wtp


【解决方案1】:

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

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

最好尝试按照so question 中的说明将服务器位置更改为 eclipse 具有写入权限且 tomcat 用户具有读取权限的位置。

编辑

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

【讨论】:

  • 迟到总比不到好。接受你的好回答。
【解决方案2】:

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

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

【讨论】:

  • 实际上它是Dynamic Web Project 向导中的一个设置,如果您在第一页选择Dynamic web module version 3.0(默认)或更高版本,那么在最后一页上,Generate web.xml deployment descriptor 的复选框被禁用默认。如果您选择 2.5 或更低版本,则默认启用。它与您实际使用的 tomcat 无关。如果你想使用注释,那么你必须有 servlet specs 3.0 的 tomcat 7。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-06-15
  • 1970-01-01
  • 2011-12-23
  • 2011-05-04
  • 2023-03-26
  • 1970-01-01
相关资源
最近更新 更多