【问题标题】:JBoss 6.1.1.EAP Module Deployment: Class not foundJBoss 6.1.1.EAP 模块部署:找不到类
【发布时间】:2015-08-11 09:32:23
【问题描述】:

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

现在的诀窍: 如果我在 Eclipse 中明确更改 WAR 项目中的部署程序集,使其不包含 JAR 项目作为“项目”,而是作为 JAR 项目“目标”文件夹中的存档,JBoss 会看到生成的类并启动。

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

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

【问题讨论】:

  • 如果您从命令行使用mvn clean package 构建EAR 并将生成的EAR 文件复制到JBoss,会发生什么情况?如果一切正常,那么我们可以继续解决您的 Eclipse 问题
  • @SteveC 我有同样的问题,如果我将 EAR 文件复制到它启动的部署文件夹中。您能否详细说明 Eclipse 问题?
  • 你在 Eclipse 中安装了JBoss Tools 吗?这些扩展知道如何正确地将应用程序部署到 WildFly/JBossAS。

标签: eclipse maven jakarta-ee jboss6.x


【解决方案1】:

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

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

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

【讨论】:

  • 谢谢!那行得通!我还必须确保在 Eclipse Maven 更新中取消选择“更新项目配置 fom.xml”。
  • 请记住,取消选中“从 pom.xml 更新项目配置”可能会导致其他 pom 更改不会影响您的项目配置,按预期从 m2e 和 m2e-wtp 插件自动更新。
【解决方案2】:

这对我有用:

  1. 在 Eclipse 中展开 maven 项目的“目标”文件夹(项目资源管理器视图);
  2. 刷新 (F5);
  3. 在“服务器”选项卡上右键单击您的项目,然后选择“完整发布”;
  4. 启动您的 JBoss。

我必须通过在 Eclipse 上手动刷新来强制执行 JBoss 工具“完全发布”以获取目标文件夹的更新版本。

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

无论如何,这对我有用。

【讨论】:

    【解决方案3】:

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

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

    我的源中的输出文件夹已链接到项目/目标/类,我将其更改为项目/目标/项目-项目版本/WEB-INF/类

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

    我很确定更新会导致问题。

    【讨论】:

      猜你喜欢
      • 2015-06-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多