我的代码依赖于abc.jar文件。这个abc.jar文件在包org.apache.log4j
下有一个名为Logger的类,但这不是Apache的Logger。
我想使用Apache的Logger。我在Apache的Logger中为maven添加了一个依赖项。但问题是,当我想使用Apache的Logger时,它会自动从abc.jar文件中获取Logger。
答案 0 :(得分:0)
当两个JAR具有相同类名的相同Package时,从特定JAR加载类。
1)您需要指定需要使用该类的JAR的路径。
为此,您可以使用
URL myURL = new URL("jar:file:" +OfficialApacheJarPath+"!/");
URL[] urls = new URL[]{myURL};
URLClassLoader cl = URLClassLoader.newInstance(urls);
Class c = cl.loadClass("Logger");
答案 1 :(得分:-1)
为防止此类冲突,您应使用完全限定的类名..e。 org.apache.log4j.Logger logger = new org.apache.log4j.Logger();
除非必须避免碰撞,否则使用完全限定的包名称通常被视为不良样式。