【发布时间】:2015-09-13 08:09:11
【问题描述】:
我正在使用 Eclipse 4.4.2、Maven 和 Tomcat v7.0 开发一个 Web 应用程序。该应用程序由一个
-
AppSuite (
<packaging>pom</packaging>) -
AppModel(
<packaging>jar</packaging>,有一些自动生成的类) -
AppUserInterface(
<packaging>war</packaging>,取决于 AppModel)
AppUserInterface 和 AppModel 是 AppSuite 的模块。
我目前面临的问题是,如果我在 Eclipse 中打开了所有三个项目并尝试在服务器上运行 AppUserInterface,那么所有内容都会正确移动到 tomcat webapps 文件夹(AppUserInterface 的*.class 文件和包括 AppModel.jar 在内的所有库)但 tomcat 抛出异常
java.lang.NoClassDefFoundError: com/app/model/ClassName
但是,如果我在 Eclipse 中关闭项目 AppModel,当我在服务器上运行 AppUserInterface 时,一切都会正常运行。
我怀疑如果 AppUserInterface 应该与本地 AppModel 一起使用,eclipse 会变得混乱。
有什么想法解决这个错误,以便我可以同时打开所有三个项目并仍然运行 AppUserInterface?
编辑:java.lang.NoClassDefFoundError: com/app/model/ClassName 类不是自动生成的类。
【问题讨论】:
-
你在什么环境下工作?视窗?因为如果像你的 IDE 这样的进程有文件锁,移动一个目录在 Windows 上是行不通的。
-
Windows,我已经检查了所有文件都复制到
webapps文件夹中,AppModel.jar也包含所有需要的*.class文件。 -
如何创建自动生成的类?
-
通过Maven的
generate-sources阶段的maven插件pojobuilder-3.4.0。AppModel.jar包含所有这些生成的类。我可能忘了提及,NoClassDefFoundError不是生成的类之一。 -
从 Eclipse 内部运行时,并非所有 Maven 阶段都会被调用。也许这有帮助:eclipse.org/m2e/documentation/m2e-execution-not-covered.html