【问题标题】:External project dependency in VaadinVaadin 中的外部项目依赖项
【发布时间】:2013-05-10 06:17:40
【问题描述】:

我有一个 Vaadin 项目和一个外部 Java 项目。我想从 Vaadin 调用外部项目中的代码。我在 Eclipse 中导入了两个项目,并且 Vaadin 项目在 Eclipse Java Build Path 中引用了外部项目。 Eclipse 没有报告错误,但是当我将 Vaadin 应用程序部署到 Tomcat(使用 Project > Run As > Run on Server)时,我收到以下错误:

HTTP Status 500 - java.lang.NoClassDefFoundError: com/example/MyClass

请注意,Vaadin 项目基于 Ivy,而不是 Maven。

我尝试搜索 Vaadin 外部项目依赖项,但没有成功。对于如何使用来自 Vaadin 的外部项目代码的任何建议,我将不胜感激。

【问题讨论】:

    标签: java eclipse vaadin ivy


    【解决方案1】:

    解决方案是将外部项目添加到 Eclipse 中 Tomcat 实例的类路径中。选择

    Run > Run Configurations > Apache Tomcat > (your Tomcat instance) > Classpath
    

    点击Add Projects...,添加需要的项目。

    这将有助于开发。对于部署,必须将外部项目作为库打包到 .jar 文件中,并手动(或使用构建脚本)复制到 Vaadin 项目的 WEB-INF/lib 目录(请参阅 Vaadin 论坛上的 this answer)。

    【讨论】:

    • 这对我有帮助。但是当您将项目导出到 WAR 文件时会发生什么?依赖性将不被尊重。如何解决这个问题?
    • @Mifeet,我在 Classpath 中添加了外部项目,但面临同样的问题 Class not found.
    【解决方案2】:

    将您的依赖项直接部署在 WEB-INF/lib 中的另一种解决方案是:

    - 将您的外部项目添加到 Project / Java Build Path / Projects
    - 将您的外部项目库(此处假定为 Maven)添加到 Project / Java Build Path / Libraries
    单击Add Variable / M2_REPO 并单击Extend 以选择正确的库。
    如果您依赖许多库,这部分可能会很痛苦。
    - 在Project / Deployment Assembly 面板中添加您的外部项目和 java 构建路径条目。
    - 重新启动您的 Tomcat 实例。

    查看WEB-INF/lib目录下的内容:
    eclipse-workspace.metadata.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\your_ project\WEB-INF\lib

    【讨论】:

      【解决方案3】:

      获取您的外部项目并将其导出为 jar。然后将您的新 jar 和任何依赖项复制到您的 vaadin 项目的 WEB-INF/lib 目录中。这将在部署和开发环境中工作。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-07-25
        • 1970-01-01
        • 2013-04-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多