Vaadin 中的外部项目依赖项

Posted

技术标签:

【中文标题】Vaadin 中的外部项目依赖项【英文标题】:External project dependency in Vaadin 【发布时间】: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 的外部项目代码的任何建议,我将不胜感激。

【问题讨论】:

【参考方案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 目录中。这将在部署和开发环境中工作。

【讨论】:

以上是关于Vaadin 中的外部项目依赖项的主要内容,如果未能解决你的问题,请参考以下文章

在maven项目中导入外部jar而不创建依赖项[重复]

eslint 'html-webpack-plugin' 应该列在项目的依赖项中,而不是 devDependencies 中。 (导入/无外部依赖项)

删除 MFC DLL 项目的外部依赖项

包括外部 jar 依赖项 spring boot 测试

Gradle + Spring启动项目:包括外部jar依赖项

不排除 Maven 瞬态依赖项(库/jar vaadin json)