URL可以,但是您仍然尝试从类路径加载jar,因此这意味着您需要首先在cp中保存文件。在您的情况下,您希望加载不在类路径中的jar,因此您必须使用URLClassLoader,对于JAR,您还可以使用JARClassLoader。如果您希望在其上获得一些示例课程,请访问:http
://docs.oracle.com/javase/ tutorial / deployment / jar /
jarclassloader.html
在这里,我一个人跑了一个样本,看看对您有没有帮助。它搜索不在我的类路径中的Log4j的Logger类,当然,由于没有将正确的参数传递给构造函数,因此在调用构造函数时遇到了异常
package org.stackoverflow;import java.io.File;import java.net.URL;import java.net.URLClassLoader;public class URLClassLoaderSample{ public static void main(String[] args) throws Exception { File f = new File("C:\_programs\apache\log4j\v1.1.16\log4j-1.2.16.jar"); URLClassLoader urlCl = new URLClassLoader(new URL[] { f.toURL()},System.class.getClassLoader()); Class log4jClass = urlCl.loadClass("org.apache.log4j.Logger"); log4jClass.newInstance(); }}Exception in thread "main" java.lang.InstantiationException: org.apache.log4j.Logger at java.lang.Class.newInstance0(Class.java:357) at java.lang.Class.newInstance(Class.java:325) at org.stackoverflow.URLClassLoaderSample.main(URLClassLoaderSample.java:19)由于错误的调用而导致的异常,尽管如此,在此阶段我们已经找到了该类



