我有两个日食项目:
- 与打包为 jar 的其他项目共享的核心类
- 一个在 Tomcat 7 上运行的 Web 应用程序,利用核心类 jar 并打包为一个战争
Maven 按预期将核心类作为 jar 编译并安装到本地存储库中。如果我使用 Maven 部署到 Tomcat,一切都很好。
如果我在 Eclipse 中的 Tomcat 服务器上配置 Webapp,只要我在 Eclipse 中关闭核心项目,我就可以毫无问题地进行热部署。当前核心 jar 文件存放在 Tomcat 上的 WEB-INF/lib 文件夹中,一切看起来都很好。
但是,当我在 Eclipse 中打开核心类项目时,我遇到了两个问题:
- 对于核心 jar 中的任何类,我都会得到 java.lang.NoClassDefFoundError
- 我注意到 WEB-INF/lib 文件夹中的 jar 文件现在是一个名为“core.jar”的目录,其中包含所有 .java 源文件(即没有 .class 文件)
我认为爆炸的 jar 是问题,但我发现除了关闭 Eclipse 中的核心项目并观察本地 maven repo 中的 jar 正确放置在 lib 文件夹中之外,没有办法阻止这种行为。
我尝试在 Eclipse 构建路径和资源组装屏幕中手动添加 jar,但它们会导致其他错误等等。Eclipse 已经通过 Maven 注册了依赖关系,所以关系已经存在,我不需要手动干预。
有没有人遇到过这个问题并修复它?