gpt4 book ai didi

java - Weblogic 10.3 类加载器问题

转载 作者:行者123 更新时间:2023-11-30 11:35:14 25 4
gpt4 key购买 nike

总结

应用程序在结构上没有改变,也没有任何代码改变,现在遇到类路径问题。唯一改变的是它的构建环境(新的 solaris box)。

应用服务器:weblogic 10.3

Maven-war-插件:2.3

错误

在应用程序 war 中有 2 个依赖项,它们具有同一类的不同版本,一个版本缺少特定的构造函数......你可以看到这是怎么回事。我们收到一个运行时错误,因为错误版本的类(缺少构造函数)被定位。

现在这是一个 Maven 项目,依赖项的排序方式使得此类的正确版本在编译时首先出现在类路径中。

就我们目前所知,所有发生变化的是新的构建箱,构建部门在其上构建 war 文件。

测试完成

如果我在自己的本地环境 (windows) 上创建 war 并将其部署到 weblogic 环境服务器 (unix box),没问题。

但是,当它是在构建盒 (solaris) 上构建的,然后我将它部署到相同的环境时,我遇到了问题。

我对比了两个war文件,没有发现什么不同。

为了证实我的怀疑(首先在类路径上遇到了错误的类),我构建了排除错误版本的包,令人惊讶的是它起作用了。 weblogic 类加载器显然先于另一个加载了这个不正确的类。

问题仍然存在,我需要确定现在突然发生这种情况的原因。

问题

在决定首先加载 lib 中的哪个依赖项方面,weblogic 的类加载器的规则是什么?

除了 MANIFEST 中的版本号外,这种行为怎么可能在两个完全相同的不同 war 之间发生变化?

非常感谢,

用户编辑

根据 Maven 依赖树的要求:

[INFO] com.xxx.web:adminapp:war:100462.7
[INFO] +- junit:junit:jar:4.11:test
[INFO] | \- org.hamcrest:hamcrest-core:jar:1.3:test
[INFO] +- struts:struts:jar:1.2.4:compile
[INFO] | +- commons-beanutils:commons-beanutils:jar:1.6.1:compile
[INFO] | +- commons-collections:commons-collections:jar:2.1:compile
[INFO] | +- commons-digester:commons-digester:jar:1.5:compile
[INFO] | | \- xml-apis:xml-apis:jar:1.0.b2:compile
[INFO] | +- commons-logging:commons-logging:jar:1.1.1:compile
[INFO] | +- commons-validator:commons-validator:jar:1.1.3:compile
[INFO] | +- oro:oro:jar:2.0.7:compile
[INFO] | +- antlr:antlr:jar:2.7.2:compile
[INFO] | \- commons-lang:commons-lang:jar:2.6:compile (version managed from 2.0)
[INFO] +- displaytag:displaytag:jar:1.2:compile
[INFO] | +- com.lowagie:itext:jar:1.3:compile
[INFO] | +- org.slf4j:jcl104-over-slf4j:jar:1.4.2:compile
[INFO] | \- org.slf4j:slf4j-log4j12:jar:1.4.2:compile
[INFO] | +- org.slf4j:slf4j-api:jar:1.4.2:compile
[INFO] | \- log4j:log4j:jar:1.2.13:compile
[INFO] +- taglibs:request:jar:1.0.1:compile
[INFO] +- org.apache.poi:poi:jar:3.8:compile
[INFO] | \- commons-codec:commons-codec:jar:1.4:compile (version managed from 1.5)
[INFO] +- javax.servlet:servlet-api:jar:2.5:provided
[INFO] +- javax.servlet:jsp-api:jar:2.0:provided
[INFO] +- com.xxx.busservices:cdm:jar:623377.7:compile
[INFO] +- com.xxx.busservices:homeratingservice-java-client:jar:1011147.2:compile
[INFO] +- com.xxx.busservices:motorratingservice-java-client:jar:1011147.2:compile
[INFO] +- com.xxx.techservices:entrefdata-java-client:jar:1011147.2:compile
[INFO] +- com.xxx.techservices:auditservice-java-client:jar:626434.4:compile
[INFO] +- com.xxx.framework:framework:jar:626434.4:compile
[INFO] +- com.xxx.ibis:xxx-logging:jar:956942.1:compile
[INFO] +- weblogic:wlfullclient:jar:10.3:provided
[INFO] +- commons-fileupload:commons-fileupload:jar:1.2.2:compile
[INFO] \- commons-io:commons-io:jar:2.1:compile

cdm.jar 包含一个名为 FactorValueLite 的类,它是正确的版本,在 motorratingservice-java-client.jar 中也存在这个类,它是错误的版本, 这个 jar 似乎首先被加载到类路径中。

最佳答案

我怀疑您的本地存储库(在您正在构建的机器上)中存在失效的旧 Artifact 。

尝试删除它,或者指定一个不同的路径(只是为了测试)。例如:

mvn clean package -Dmaven.repo.local=/tmp/repository

如果通过,那么修复很简单:删除存储库。

关于java - Weblogic 10.3 类加载器问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15223390/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com