服务器无法在.ear中找到类

时间:2010-07-03 23:12:49

标签: java maven-2 java-ee java-ee-6 ear

我的.ear文件存在一些问题。该文件的结构是:

app.ear
|-xxx.jar
 -yyy.jar
 -zzz.jar
 -ektorp.jar
 -app-ejb.jar
 -app-web.war
  |-WEB-INF
    |-lib
      |-xxx.jar
      |-yyy.jar
      |-zzz.jar
      |-ektorp.jar

当我尝试部署我的应用程序时,我得到ClassNotFoundException,类wihch在ektorp.jar中。该文件由ejb模块使用。

我也不知道为什么这些罐子加倍?在耳朵和战争模块中是相同的.jar文件。

耳朵由maven2构建。

1 个答案:

答案 0 :(得分:2)

  

当我尝试部署我的应用程序时,我得到ClassNotFoundException,其中的类在ektorp.jar中。该文件由ejb模块使用。

EJB-JAR是否在清单中的ektorp.jar条目中引用Class-Path:(有关此问题的更多背景,请参阅Packaging EJB 3 Applications)?常见问题解答解释了how you can configure the plugin to generate a Class-Path: entry in the manifest

<project>
  ...
  <build>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-ejb-plugin</artifactId>
        <version>2.2.1</version>
        ...
        <configuration>
          <archive>
            <manifest>
              <addClasspath>true</addClasspath>
           </manifest>
         </archive>
       </configuration>
        ...
     </plugin>
   </plugins>
 </build>
  ...
</project>

以防万一,您是否知道可以使用Java EE 6在.war中打包EJB(不同之处在于使用.war打包时所有类都使用相同的类加载器加载)?如果您没有强大的模块化要求,.war包装会更简单。