我有一个关于Weblogic服务器11 G类加载基础架构的查询。
假设我在服务器启动时在类路径中加载了两个名为 A.jar 和 B.jar 的应用程序罐。
默认情况下,两个jar都包含类 LoadMe.class ,并且从jar A.jar 加载 LoadMe.class 。
现在我想更改上面的默认行为,并希望从 B.jar 而不是 A.jar 加载该类。
我该怎么做?
任何帮助将不胜感激。
答案 0 :(得分:0)
每当第一次使用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()));