在eclipse上导入并运行WAR

时间:2012-10-11 11:26:14

标签: eclipse tomcat maven jetty war

我在Ubuntu的虚拟机中有一个子项目,我用Maven编译然后用mvn jetty:run.运行

Maven还把它打包成战争。

所有这一切都很好,并且做到了预期。

我正在尝试从Windows中的另一个eclipse导入此WAR,所以我通过Import -> WAR完成了这个,从而创建了一个Web应用程序。

我现在想从Eclipse运行它,所以我创建了一个新的Jetty服务器并以Run on Server运行我的应用程序,但我得到了Could not find the main class

这样做的正确方法是什么?

此外,我尝试将应用程序放在webapps Tomcat目录中进行部署。我可以在Tomcat GUI中看到它并启动index.html但是当我尝试访问某些服务时它会抛出No service was found

部署时,在Tomcat控制台中我可以看到运行时NoClassDefFoundErrors。

tomcat常规部署没有mvn jetty:run做什么吗?怎么可能在我的虚拟机中没有发生这种情况?那些类不应该都在WAR中吗?

编辑:

这是另一个提示。当我在Ubuntu VM中运行从WAR导入的项目时,无论是使用eclipse中的Jetty还是将其添加到webapps文件夹,它都能正常工作。

只有母鸡在失败时才能在Windows主机环境中运行它。

cmd上抛出的特定NoClassdefFoundErrors如下:

Caused by: java.lang.NoClassDefFoundError: org/ow2/frascati/explorer/
api/FraSCAtiExplorer

这是主要项目的模块之一。

2 个答案:

答案 0 :(得分:0)

如果您尝试在tomcat的webapps文件夹中部署战争,并且如果您错过了一个类,那么您可能会错过lib文件夹中的jar。它可能是一个应该由Web服务器提供的jar。

我们需要知道缺少哪个班级。

答案 1 :(得分:0)

最后,通过执行以下操作解决了所有错误:

首先,我重新编译了WAR,这次在Windows cmd中的Jetty下工作。我道歉,因为这一定是由于我仍然不知道的一些错误,可能从一开始就与Windows HOST OS共享错误的WAR。

另一方面,通过将Jetty文件夹移出“Program Files”目录来解决Eclipse问题。似乎Eclipse附带的旧Jetty 6适配器无法识别到服务器的路径中的空格。