Java 在application.xml中将JAR添加到应用程序?

Java 在application.xml中将JAR添加到应用程序?,java,weblogic,application.xml,Java,Weblogic,Application.xml,我有一个java应用程序需要部署在weblogic服务器中。我目前正在为该应用程序制作ear文件。我的ear文件中有一个ejb jar。我想将log4j2 jar添加到此应用程序。所以我的文件夹结构是 > Project-Name- > --Ear-Content > --APP-INF > --lib -> log4j2 jars > --classes - > log4j2.xm

我有一个java应用程序需要部署在weblogic服务器中。我目前正在为该应用程序制作ear文件。我的ear文件中有一个ejb jar。我想将log4j2 jar添加到此应用程序。所以我的文件夹结构是

> Project-Name-
>     --Ear-Content
>         --APP-INF
>             --lib -> log4j2 jars
>             --classes - > log4j2.xml
>         --META-INF->application.xml, MANIFEST.MF, weblogic-application.xml
>         --Project-Name.jar
目前,我已将JAR放在APP-INF文件夹/lib中,并将JAR放在META-INF/application.xml中的模块中。这是我的application.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE application PUBLIC '-//Sun Microsystems, Inc.//DTD J2EE Application 1.3//EN' 'http://java.sun.com/dtd/application_1_3.dtd'>
<application>
  <display-name>ProjectName</display-name>
  <description>ProjectName</description>

  <module>
        <ejb>ProjectName.jar</ejb>

  </module>
  <module>
        <java>lib/log4j-api-2.1.jar</java>

  </module>
  <module>
  <java>lib/log4j-core-2.1.jar</java>
  </module>


</application>

项目名称
项目名称
ProjectName.jar
lib/log4j-api-2.1.jar
lib/log4j-core-2.1.jar

但它不需要log4j罐子。任何解决方案???

如果您只打包一个应用程序,我强烈建议使用war文件而不是ear,因为它更简单。否则,您可能需要将当前的
Project Name.jar
打包到war文件中,然后将其打包到ear中

请参见类似的教程

也就是说,您不需要使用
module
标记显式引用application.xml文件中的log4j库。从:

存储在APP-INF/classes和APP-INF/lib下的类和库 可用于企业应用程序中的所有模块。这个 应用程序类加载器总是尝试通过 首先查看APP-INF/classes,然后查看APP-INF/lib

最后但并非最不重要的一点是,如果Weblogic似乎没有使用您希望它使用的类,而是使用默认值,那么在您的案例中,
log4j 1.2
vs
log4j 2
,您需要在application.xml中设置以下内容来告诉Weblogic要使用哪一个:

<prefer-application-packages>
    <package-name>org.apache.log4j.*</package-name>
</prefer-application-packages>

org.apache.log4j*

我删除了模块并添加了这个,它成功了!谢谢