结构如下: 实际部署的模块是EAR。 EAR包含WAR模块,WAR模块包含另一个JAR模块。 在最后一个JAR中,有一些生成的类,它们的父文件夹也用作源文件夹。它的路径是“target / generated-sources / java”。 杀死我的问题是,部署的应用程序在服务器启动时抛出ClassNotFoundException,并且所讨论的类是生成的类。
现在的诀窍: 如果我在Eclipse中明确更改WAR项目中的Deployment Assembly不要将JAR项目包含为“project”,而是作为JAR项目“target”文件夹中的存档,JBoss会看到生成的类并启动。
然而,此解决方案仅适用于下一次eclipse maven项目更新,因此部署程序集的手动编辑并不是真正的解决方案。
有关如何正确部署或重新组织包的任何想法吗?
答案 0 :(得分:1)
好的,好像我找到了解决方案。
我查看了上述JAR文件的构建路径,发现条目输出文件夹指向target/test-classes
。
将此条目更改为target/classes
后,应用程序将部署并启动,而不会丢失任何生成的类。
答案 1 :(得分:0)
这对我有用:
我必须强制执行JBoss工具"完全发布"通过在eclipse上手动刷新来获取目标文件夹的更新版本。
我不知道为什么,但有时从maven项目发布(甚至是完整发布)不会像在文件系统中那样从目标项目中复制类。也许它使用了一些过时的内存信息或一些缓存...
无论如何,这对我有用。
答案 2 :(得分:0)
在更新了Eclipse 4.15和JBoss工具之后,我也遇到了这个问题。
我的解决方案:项目->属性-> Java构建路径->源
我的源文件夹中的Output文件夹已链接到project / target / classes,我将其更改为project / target / project-projectversion / WEB-INF / classes
当我查看独立的JBoss文件夹时,我看到了源代码的文件夹结构,但是缺少类,当我更改输出文件夹时,这些类弹出了,并且一切都像以前一样工作。
我很确定该更新会引起问题。