【问题标题】:Weblogic 11 G : Altering default class loadingWeblogic 11 G:更改默认类加载
【发布时间】:2012-12-03 10:51:13
【问题描述】:

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

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

默认情况下,两个 jar 都包含类 LoadMe.class 并从 jar A.jar 中加载 LoadMe.class

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

我该怎么做?

我们将不胜感激。

【问题讨论】:

  • LoadMe.class 在两个 jar 中是否有相同的包?
  • 是的......两个罐子里的包也一样
  • 试试我在下面给出的选项

标签: classloader weblogic11g


【解决方案1】:

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

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

Try this link for more on ClassLoaders

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

Setting classpath in 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()));

【讨论】:

  • 但是没有任何方法可以指示类加载器通过配置从特定的 jar 加载特定的包 .... 放置第一个或第二个似乎是一些补丁解决方案
  • 不,不是。这就是 CLASSPATH 和 ClassLoaders 在 Java 中的工作方式。
  • @Ketan forums.oracle.com/forums/thread.jspa?threadID=1032064 更改 WebLogic 11G 的类路径
  • 我已经完成了,但仍然没有得到任何关于配置类加载顺序的提示?你能帮我解决这个问题吗?
  • 在 11g 中,如果您想修改类路径,您应该在管理控制台的服务器配置中的 Server Start Tab 中进行相同的更改。托管服务器的所有重新启动都应由管理控制台处理。本质上它可以防止错误。 docs.oracle.com/cd/E28389_01/apirefs.1111/e13952/pagehelp/…
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-05-29
  • 2011-09-16
  • 2016-05-06
  • 1970-01-01
  • 1970-01-01
  • 2020-10-30
  • 1970-01-01
相关资源
最近更新 更多