jboss WFLYEE0040:此模块中已定义名为...'的组件

ih99xse1  于 2022-11-08  发布在  其他
关注(0)|答案(4)|浏览(99)

我在一个Java maven项目中遇到了这个错误。奇怪的是,它并没有出现在每台机器上,所以我认为它与配置问题有关。
类RoleKeyCacheImpl是一个@Startup @单例:

@Startup
@Singleton
public class RoleKeyCacheImpl implements RoleKeyCache { ... }

这是Wildfly在部署服务时触发的错误。
错误原因:java.lang.非法参数异常:WFLYEE0040:已在此模块中的org.jboss.as.ee组件中定义了名为“RoleKeyCacheImpl”的组件。在org.jboss.as.ejb3.deployment.processors.EJBComponentDescriptionFactory.addComponent(EJBComponentDescriptionFactory.java:58)中定义了EEModuleDescription.添加组件(EEModuleDescription. java:167)。
我试过了:

  • 在同一台机器上安装新的Wildfly(V10,V13)-〉没有帮助
  • 在这台机器上安装一个全新的Eclipse-〉没有帮助
  • 清理和重建所有相关项目
  • 确保deployments-folder为空,并且不包含同一WAR的旧版本
  • 请阅读此处的相关问题,但也没有帮助(他们使用Spring):A component named 'XXX' is already defined in this module in JBoss 7.1.1
  • 阅读并尝试以下问答:Wrong dependencies with EJB in JBoss Wildfly(服务器清理)-〉没有帮助
  • 已删除并重建本地Maven rep(“.m2”)-〉无影响
  • 在另一台计算机上 checkout 相同的源代码-〉在一台计算机上可以正常工作,在另一台计算机上则会出现相同的错误

我完全不知道问题是什么,甚至可能是什么。在一台机器上,我们检查了它,它运行没有错误。在其他机器上,完全相同的错误发生。
有谁有主意吗?

gopyfrb3

gopyfrb31#

我在EAP 7.1中多次遇到相同的问题,现在在WildFly 21.0.0中再次遇到。根据经验,我知道这是Eclipse试图自动部署到已配置的WildFly示例时导致的问题。在部署(或取消部署)过程中,出现了一些并发文件问题,应该删除的文件仍然在文件系统中,导致组件已定义的错误。
事实上,它还没有定义,只是WildFly感到困惑,因为它在临时目录中发现了一些不应该存在的旧文件,并引用了完全相同的组件。
解决方案:在WildFly独立目录中删除“deployments”目录和“tmp”目录中的内容。请放心,所有内容都可以安全删除。重新启动,错误信息就会消失;- )

q5iwbnjs

q5iwbnjs2#

请注意,在同一个模块中,两个同名的类上不能有两个@Stateless EJB注解,可以通过在注解中使用name属性来区分它们,并在每个类中放置不同的值

h9vpoimq

h9vpoimq3#

类似乎已存在。请检查是否存在...您可能必须重写EEModuleDescription的该部分以使用其自己的私有方法如果类实际上不存在,则右键单击项目-〉Maven 2 Tools -〉Generate Eclipse Artifacts。(检查更新)。这将重新生成项目使用的所有依赖关系。另外,请确保没有错误地将任何新项目添加到类路径中,否则也可能导致此错误。

bgibtngc

bgibtngc4#

我今天刚遇到这个问题,一个同事添加了一个maven依赖项。原来这个依赖项是一个jar,在清单中有一个讨厌的类路径条目或“../”。我编辑了jar的manifest.mf,它是用7-zip缓存在我的本地maven存储库中的,并删除了“../”类路径条目。然后重新打包了我的war文件(maven干净安装),答对了,它成功了!
在我的例子中,它是由org.libreoffice jurt版本5.4.2引起的(但我检查的其他版本也有类路径的肮脏)。
不幸的是,我很幸运,我们把它定位到一个依赖项,YMMV!

相关问题