【问题标题】:Import and run WAR on eclipse在eclipse上导入并运行WAR
【发布时间】:2012-10-02 01:13:11
【问题描述】:

我在带有 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。

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

编辑:

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

只有在失败时才在 Windows 主机环境上运行它。

cmd上抛出的具体NoClassdefFoundErrors如下:

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

这是主项目的模块之一。

【问题讨论】:

  • 缺少哪些类?它们是来自应用程序中使用的库还是应用程序的类?
  • @Kal,它们是从主项目的库中导入的类。关键是相同的 WAR 在 VM 中工作。有什么想法吗?

标签: eclipse tomcat maven jetty war


【解决方案1】:

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

我们需要知道缺少哪个类。

【讨论】:

  • @Samuel_EUSTACHI,它是来自主项目的一个类。但是同样的 WAR 在 VM 中也有效。请查看我的 las EDIT 以查看缺少的特定类。
  • 你在 WEB-INF/classes 中找到你的战争中的班级吗?
  • 不,因为那里只有一个类:Peer.composite。这是一个 SCA 应用程序。但就此而言,它与 linux 工作 WAR 中的相同
  • 好的,但是,它来自某个地方,如果不是来自类,它来自一个 jar,即使从逻辑上讲,这是你的“主要项目”
  • 它必须在它从该主项目导入的数百万个罐子之一中。我现在已经能够通过在 webapps 中再次复制 WAR 从 cmd 运行战争,但在 Eclipse 中仍然出现“无主类”错误。你知道吗?
【解决方案2】:

最后所有的错误都通过以下方法解决了:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-16
    相关资源
    最近更新 更多