我目前的项目包括一个war和ejb模块,正在使用一个jar(通过maven加入)。这个jar包含一个CDI组件,当我在war模块中注入它时,它按预期工作,但是当我在我的ejb模块中注入它时,我在eclipse(完整配置文件)中从我的WAS 8.5启动时得到NoClassDefFoundError。
当我首先启动服务器时,稍后添加注入并重新发布它似乎工作。此外,当我使用Liberty配置文件时,它工作。同样在Z / OS和IPAS上,它按预期工作。
我认为它可能与类加载有关,但不知道如何正确解决这个问题。
使用Eclipse Neon,WAS 8.5.5.11完整档案,jee6 当组件使用java 6时,Project正在使用java 8
这是堆栈跟踪的第一部分:
[13-9-17 14:54:26:589 CEST] 0000003e InjectionProc W CWNEN0047W:将忽略BestelFacade类字段上的资源注释。由于exc,无法获得注释 记录:记录器 at java.lang.Class.getDeclaredFieldsImpl(Native Method)
由于
答案 0 :(得分:0)
我找到了完成工作的方法,但我不确定这是一个正确的解决方案,还是只是在掩盖真正问题时的解决方法。
当我看一下耳模块组件时,我在源列c:/ ws /.../ jar和部署路径lib / jar中看到
当我将源更改为/..ear/target/../jar时,它可以正常工作
答案 1 :(得分:0)
尝试设置 <bundleDir>/</bundleDir>
这会将外部jar / ejb不在lib中,而是在根中。
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-ear-plugin</artifactId>
<configuration>
...........
<defaultLibBundleDir>lib</defaultLibBundleDir>
<modules>
<jarModule>
<groupId>groupId</groupId>
<artifactId>artifactId</artifactId>
<bundleDir>/</bundleDir>
</jarModule>
</modules>
</configuration>
</plugin>