Java JBoss EAP 6在APP-INF/lib中找不到JAR

Java JBoss EAP 6在APP-INF/lib中找不到JAR,java,jboss,migration,ejb,weblogic,Java,Jboss,Migration,Ejb,Weblogic,我正在从Weblogic迁移到JBoss EAP 6.4,但在部署和启动JBoss服务器时遇到问题 我的耳朵结构如下: .EAR | |---APP-INF | |---lib | |---[many .jar files] | |---META-INF | |---application.xml | |---jboss-deployment-structure.xml | |---[EJB JAR files] 问题: EAR根目录中的E

我正在从Weblogic迁移到JBoss EAP 6.4,但在部署和启动JBoss服务器时遇到问题

我的耳朵结构如下:

.EAR
|
|---APP-INF
|      |---lib
|           |---[many .jar files]
|
|---META-INF
|       |---application.xml
|       |---jboss-deployment-structure.xml
|
|---[EJB JAR files]
问题:


EAR根目录中的EJB JAR无法访问JAR中
APP-INF/lib
文件夹中的类。

我手动将
lib
文件夹放在EAR的根目录,而不是
APP-INF
文件夹中,这似乎起到了作用

JBoss正在查看
.EAR/lib
而不是
.EAR/APP-INF/lib

然后,我在我的
pom.xml
中的
maven ear plugin
部分添加了以下内容,以使maven在根目录下而不是在
APP-INF
中创建
lib
文件夹:

<plugin>
    <artifactId>maven-ear-plugin</artifactId>
    <version>2.9.1</version>
    <configuration>
        <defaultLibBundleDir>lib</defaultLibBundleDir>
        <goals>
            <goal>generate-application-xml</goal>
            <initializeInOrder>true</initializeInOrder>
        </goals>
    </configuration>
</plugin>

maven耳朵插件
2.9.1
解放党
生成应用程序xml
真的

APP-INF/lib的位置特定于WebLogic。有两种解决方案:

  • 让Maven根据标准构建应用程序-
    /lib
    。这就是你在回答中所做的

  • 由于Java EE 5,您可以在META-INF/application.xml文件中包含library directory参数:

    <application xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="5" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/application_5.xsd">
       <module>
          <ejb>hello-ejb.jar</ejb>
       </module>
       <module>
          <web>
         <web-uri>myapp.war</web-uri>
         <context-root>myapp</context-root>
          </web>
       </module>
       <library-directory>APP-INF/lib</library-directory>
    </application>
    

    检查。您是否在windows上运行jboss?我注意到我可以在mac上使用子目录,如
    APP-INF/lib
    my/lib
    ,但在windows上无法使用。也尝试过反斜杠,但没有成功。@Love是的,我在Windows上做过
        <application>
          <display-name>My Application</display-name>
          <module>
            <web>
              <web-uri>myapp.war</web-uri>
              <context-root>/myapp</context-root>
            </web>
          </module>
    
          <module>
            <ejb>myapp.jar</ejb>
          </module>
    
          <library-directory>APP-INF/lib</library-directory>
    
        </application>