0

我有一个关于 Weblogic server 11 G 类加载基础结构的查询。

假设我在服务器启动期间在类路径中加载了两个名为A.jarB.jar的应用程序 jar。

默认情况下,这两个 jar 都包含类LoadMe.class和服务器从 jar A.jar加载LoadMe.class

现在我想改变上述默认行为,并希望从B.jar而不是A.jar加载该类。

我怎样才能做到这一点?

任何帮助将不胜感激。

4

1 回答 1

0

每当您LoadMe第一次使用类时,ClassLoader 将尝试使用 CLASSPATH 解决依赖关系。

现在,如果您必须从 B.jar 加载该类,那么您必须首先在 CLASSPATH 中明确放置该 jar 的路径,然后将 A.jar 放置在第二个。所以 ClassLoader 将首先从 B.jar 中选择类。

尝试此链接以获取有关 ClassLoaders 的更多信息

阅读this并更改类路径,问题应该得到解决

在 WebLogic 11G 中设置类路径

更新

System.out.println("Classpath dependency for LoadClass: ");
URLClassLoader classLoader = (URLClassLoader)LoadMe.class.getClassLoader();
System.out.println(Arrays.toString(classLoader.getURLs()));

System.out.println("Classpath dependency for Context: ");
URLClassLoader classLoader1 = (URLClassLoader)Thread.currentThread().getContextClassLoader());
System.out.println(Arrays.toString(classLoader.getURLs()));
于 2012-12-03T13:11:19.190 回答