我有一个关于 Weblogic server 11 G 类加载基础结构的查询。
假设我在服务器启动期间在类路径中加载了两个名为A.jar和B.jar的应用程序 jar。
默认情况下,这两个 jar 都包含类LoadMe.class和服务器从 jar A.jar加载LoadMe.class。
现在我想改变上述默认行为,并希望从B.jar而不是A.jar加载该类。
我怎样才能做到这一点?
任何帮助将不胜感激。
我有一个关于 Weblogic server 11 G 类加载基础结构的查询。
假设我在服务器启动期间在类路径中加载了两个名为A.jar和B.jar的应用程序 jar。
默认情况下,这两个 jar 都包含类LoadMe.class和服务器从 jar A.jar加载LoadMe.class。
现在我想改变上述默认行为,并希望从B.jar而不是A.jar加载该类。
我怎样才能做到这一点?
任何帮助将不胜感激。
每当您LoadMe
第一次使用类时,ClassLoader 将尝试使用 CLASSPATH 解决依赖关系。
现在,如果您必须从 B.jar 加载该类,那么您必须首先在 CLASSPATH 中明确放置该 jar 的路径,然后将 A.jar 放置在第二个。所以 ClassLoader 将首先从 B.jar 中选择类。
阅读this并更改类路径,问题应该得到解决
更新:
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()));