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 中的外部项目依赖项的主要内容,如果未能解决你的问题,请参考以下文章
eslint 'html-webpack-plugin' 应该列在项目的依赖项中,而不是 devDependencies 中。 (导入/无外部依赖项)