1

为了让 eclipse 的 run-as...run-on-server 命令起作用,在 eclipse 动态 Web 项目中究竟需要什么?

我在 Eclipse 动态 Web 项目中有一个经过全面测试的应用程序,我一直在使用 tomcat 7 管理器应用程序运行它,它允许您指向应用程序的 xml 配置文件,以便在开发期间在创建战争文件之前发布应用程序. 那个应用xml配置文件只是指向web.xml的位置,如下:

<Context path="/myapp" docBase="C:\mypath\myapp\web"></Context>

(我也有一个战争文件,但这超出了这个问题的范围。)

由于各种原因,我希望能够使用 eclipse 的 run-as...run-on-server 命令来测试这个应用程序,但是这样做会导致每次我尝试站点中的任何 url 时都会出现 404 错误。

堆栈跟踪中的以下主要错误被其他帖子忽略

WARNING: [SetPropertiesRule]{Server/Service/Engine/Host/Context} Setting property 'source' to 'org.eclipse.jst.jee.server:myapp' did not find a matching property.

对于踢,这是 Eclipse 控制台中的整个堆栈跟踪:

Aug 29, 2013 12:28:54 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: C:\glassfish\jdk\bin;C:\Windows\Sun\Java\bin;C:\Windows\system32;C:\Windows;C:/eclipse_kepler/jre/bin/../jre/bin/server;C:/eclipse_kepler/jre/bin/../jre/bin;C:/eclipse_kepler/jre/bin/../jre/lib/amd64;C:\Program Files\Common Files\Microsoft Shared\Windows Live;C:\Program Files (x86)\Common Files\Microsoft Shared\Windows Live;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Program Files\Intel\WiFi\bin\;C:\Program Files\Common Files\Intel\WirelessCommon\;C:\Program Files (x86)\Windows Live\Shared;C:\Program Files (x86)\Microsoft SQL Server\100\Tools\Binn\;C:\Program Files (x86)\Microsoft SQL Server\100\DTS\Binn\;C:\Program Files (x86)\MATLAB\R2010a Student\bin;C:\Program Files\Microsoft Windows Performance Toolkit\;C:\Program Files\Microsoft SQL Server\110\Tools\Binn\;C:\Program Files\TortoiseSVN\bin;C:\Program Files\Java\jdk1.7.0_17\bin;C:\eclipse_kepler;;.  
Aug 29, 2013 12:28:54 PM org.apache.tomcat.util.digester.SetPropertiesRule begin
WARNING: [SetPropertiesRule]{Server/Service/Engine/Host/Context} Setting property 'source' to 'org.eclipse.jst.jee.server:myapp' did not find a matching property.
Aug 29, 2013 12:28:55 PM org.apache.coyote.AbstractProtocol init
INFO: Initializing ProtocolHandler ["http-bio-8080"]
Aug 29, 2013 12:28:55 PM org.apache.coyote.AbstractProtocol init
INFO: Initializing ProtocolHandler ["ajp-bio-8009"]
Aug 29, 2013 12:28:55 PM org.apache.catalina.startup.Catalina load
INFO: Initialization processed in 801 ms
Aug 29, 2013 12:28:55 PM org.apache.catalina.core.StandardService startInternal
INFO: Starting service Catalina
Aug 29, 2013 12:28:55 PM org.apache.catalina.core.StandardEngine startInternal
INFO: Starting Servlet Engine: Apache Tomcat/7.0.42
Aug 29, 2013 12:28:55 PM org.apache.coyote.AbstractProtocol start
INFO: Starting ProtocolHandler ["http-bio-8080"]
Aug 29, 2013 12:28:55 PM org.apache.coyote.AbstractProtocol start
INFO: Starting ProtocolHandler ["ajp-bio-8009"]
Aug 29, 2013 12:28:55 PM org.apache.catalina.startup.Catalina start
INFO: Server startup in 462 ms

没有 catalina.out 文件,因为它试图通过 eclipse 运行 tomcat。此外,代码在通过 tomcat 7 管理器运行时有效,所以我不确定在此处添加代码是否相关。我想知道是否只是缺少一些关键资产,或者需要配置一些设置。

也许 ECLIPSE 没有找到 WEB.XML?web.xml 文件位于上面显示的上下文路径中。Eclipse 可能希望它位于 WebContent/WEB-INF/web.xml 中,但我认为我更改了首选项中的设置以匹配上面的上下文路径,并且使用 WebContent 文件夹会弄乱我的构建文件,所以我想避免那。

4

1 回答 1

2

在项目属性下的“部署程序集”下,确保包含 web.xml 的文件夹在列表中。我有一个 maven 项目,它在 webapps 文件夹中有 web.xml,但默认的 web 部署配置是发布“/WebContent”,并省略了我的“/src/main/webapp”文件夹,所以 Tomcat 没有看到它在服务器上运行后。

如果您没有看到部署程序集,请进入项目属性、项目方面,确保选择“动态 Web 模块”,然后应用。然后返回项目属性,您应该会看到“部署程序集”的新选项。

此外,如果您确实有一个 Maven 托管项目,您还需要将您的 Maven 依赖项添加到您的列表以及部署程序集中(添加 -> java 构建路径条目 -> Maven 依赖项)。

于 2013-09-19T22:27:33.130 回答