我在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
这是主要项目的模块之一。
答案 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适配器无法识别到服务器的路径中的空格。