JBoss 6.1.1.EAP 模块部署:Class 未找到

JBoss 6.1.1.EAP Module Deployment: Class not found

结构如下: 实际部署的模块是 EAR。 EAR 包含 WAR 模块,而 WAR 模块包含另一个 JAR 模块。 在最后一个 JAR 中,有一些生成的 类 并且它们的父文件夹也用作源文件夹。它的路径是"target/generated-sources/java"。 困扰我的问题是部署的应用程序在服务器启动时抛出 ClassNotFoundException,而有问题的 类 是生成的。

现在是诀窍: 如果我在 Eclipse 中显式更改 WAR 项目中的部署程序集以不将 JAR 项目包含为 "project",但作为 JAR 项目 "target" 文件夹中的存档,JBoss 会看到生成 类 并开始。

然而,此解决方案仅在下一次 eclipse maven 项目更新之前有效,因此手动编辑部署程序集并不是真正的解决方案。

对如何正确部署或重组包有任何想法吗?

好的,看来我找到了解决办法。

我查看了上述 JAR 文件的构建路径,发现条目 Output folder 指向 target/test-classes

将此条目更改为 target/classes 后,应用程序部署并启动,不会丢失任何生成的 类。

这对我有用:

  1. 在 Eclipse(Project Explorer 视图)中展开您的 Maven 项目的 'target' 文件夹;
  2. 刷新 (F5);
  3. 在 'Servers' 选项卡上右键单击您的项目,然后 select "Full Publish";
  4. 开始你的JBoss.

我不得不强制使用 JBoss 工具 "Full Publish" 通过在 eclipse 上手动刷新来获取我的目标文件夹的更新版本。

我不知道为什么,但有时从 maven 项目发布(甚至完整发布)不会从目标项目复制 类,因为它在文件系统中。也许它正在使用一些过时的内存信息或一些缓存...

无论如何,这对我有用。

更新 Eclipse 4.15 和 JBoss 工具后,我也遇到了这个问题。

我的解决方案:项目 -> 属性 -> Java 构建路径 -> 源代码

我的源输出文件夹链接到 project/target/classes,我将其更改为 project/target/project-projectversion/WEB-INF/classes

当我查看独立的 JBoss 文件夹时,我看到了源的文件夹结构,但是缺少 类,当我更改输出文件夹时,类 弹出一切都像以前一样。

我很确定是更新造成了问题。