eclipse:EJB模块中的外部CDI:NoClassDefFoundError

时间:2017-09-13 08:08:27

标签: java eclipse java-ee websphere cdi

我目前的项目包括一个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)

由于

2 个答案:

答案 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>
相关问题