2013-05-15 50 views
2

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

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

注意,Vaadin项目是基于常春藤,没有Maven的。

我试过四处寻找Vaadin外部项目依赖关系,没有成功。对于如何使用Vaadin的外部项目代码的任何建议,我将非常感激。

回答

2

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

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

点击Add Projects...并添加所需的项目。

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

+0

这帮了我。但是当您将项目导出到WAR文件时会发生什么?依赖不会被尊重。这个问题如何解决? – Atmocreations

+0

@Mifeet,我在Classpath中添加了外部项目,但面临同样的问题Class not found。 – JankiPanwala

1

另一种解决方案,这将直接在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

0

把你的外部项目并将其导出为一个罐子。然后将您的新jar和任何依赖项复制到您的vaadin项目的WEB-INF/lib目录中。这将在部署以及开发环境中起作用。