Weblogic 10.3.1.0正在使用com.bea.core.apache.commons.net_1.0.0.0_1-4-1.jar ...我想从我的代码中使用commons-net-2.0.jar

Cal*_*Cal 9 java weblogic classpath weblogic-10.x

Weblogic 10.3.1.0正在使用com.bea.core.apache.commons.net_1.0.0.0_1-4-1.jar ...我想从我的代码中使用commons-net-2.0.jar.

如何强制它仅在我的代码中使用较新的JAR?

Pas*_*ent 20

我想从我的代码中使用commons-net-2.0.jar.

WebLogic使用父类加载器第一策略,您基本上有两个选项来调整此行为:

  • 在Web应用程序部署描述符中使用prefer-web-inf-classes元素weblogic.xml(在WEB-INF旁边web.xml)〜或〜
  • 将您的war内部包装到EAR中并使用您在描述符中配置的WebLogic Filtering类加载器weblogic-application.xml(位于META-INF旁边application.xml)

这是一个weblogic.xml示例:

<?xml version="1.0" encoding="UTF-8"?>
<weblogic-web-app
 xmlns="http://www.bea.com/ns/weblogic/90"
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 xsi:schemaLocation="http://www.bea.com/ns/weblogic/90 http://www.bea.com/ns/weblogic/90/weblogic- web-app.xsd">
    <container-descriptor>
        <prefer-web-inf-classes>true</prefer-web-inf-classes>
     </container-descriptor>
</weblogic-web-app>
Run Code Online (Sandbox Code Playgroud)

以下是weblogic-application.xml的示例:

<?xml version="1.0" encoding="UTF-8"?>
<weblogic-application xmlns="http://www.bea.com/ns/weblogic/90">
    <application-param>
        <param-name>webapp.encoding.default</param-name>
        <param-value>UTF-8</param-value>
    </application-param>
    <prefer-application-packages>
        <package-name>javax.jws.*</package-name>
    </prefer-application-packages>
</weblogic-application>
Run Code Online (Sandbox Code Playgroud)

前一个选项更简单,但对于webapp是全局的.如果您目前没有使用EAR包装但是提供更好的控制,后者会引入更多复杂性.

也可以看看