为了使 eclipse 的 run-as...run-on-server 命令正常工作,在 eclipse 动态 Web 项目中到底需要什么?
我在 eclipse 动态 web 项目中有一个经过全面测试的应用程序,我一直在使用 tomcat 7 管理器应用程序运行它,它允许您指向应用程序的 xml 配置文件,以便在创建之前在开发过程中发布应用程序 war 文件。那个应用的xml配置文件只是指向了web.xml的位置,如下:
<Context path="/myapp" docBase="C:\mypath\myapp\web"></Context>
(我也有一个 war 文件,但这不在这个问题的范围内。)
出于各种原因,我希望能够使用 eclipse 的 run-as...run-on-server 命令来测试这个应用程序,但是每次我尝试地点。
堆栈跟踪中的以下主要错误是 dismissed by other postings :
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 管理器运行时有效,因此我不确定在此处添加代码是否相关。我想知道是否只是缺少一些关键 Assets ,或者需要配置一些设置。
也许 ECLIPSE 没有找到 WEB.XML? web.xml 文件位于上面显示的上下文路径中。 Eclipse 可能希望它位于 WebContent/WEB-INF/web.xml 而不是,但我想我更改了首选项中的设置以匹配上面的上下文路径,并且使用 WebContent 文件夹会弄乱我的构建文件,所以我想避免那个。
最佳答案
在项目属性下的“部署程序集”下,确保包含您的 web.xml 的文件夹在列表中。我有一个 maven 项目,它在 webapps 文件夹中有 web.xml,但是默认的 Web 部署配置是发布“/WebContent”,并遗漏了我的“/src/main/webapp”文件夹,所以 Tomcat 没有看到它在服务器上运行之后。
如果您没有看到 Deployment Assembly,请转到项目属性、项目方面,确保选择“动态 Web 模块”,然后应用。然后返回项目属性,您应该会看到“部署程序集”的新选项。
此外,如果您确实有一个 maven 管理的项目,您将需要将您的 maven 依赖项添加到您的列表以及部署程序集中(添加 -> java 构建路径条目 -> maven 依赖项)。
关于java - 在 eclipse web 项目中需要什么才能让 run-as...run-on-server 工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18519653/