Vaadin中的外部项目依赖

我有一个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的外部项目代码的任何建议。

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

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

单击“ Add Projects...并添加所需项目。

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

另一个将您的依赖项直接部署在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

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