我有一个jar文件,它是一个名为lib的单独文件夹,所以我试图从那里加载一个jar,如下面的代码所示,但我得到异常,这是一个错误的异常请告诉我如何纠正这个请告知
import java.net.URL;
import java.net.URLClassLoader;
import java.net.MalformedURLException;
public class JarFileLoader extends URLClassLoader {
public JarFileLoader(URL[] urls) {
super(urls);
}
public void addFile(String path) throws MalformedURLException {
String urlPath = "jar:file://" + path + "!/";
addURL(new URL(urlPath));
}
public static void main(String args[]) {
try {
System.out.println("First attempt...");
Class.forName("org.apache.poi.ss.usermodel.HssfSheet");
} catch (Exception ex) {
System.out.println("Failed.");
}
try {
URL urls[] = {};
JarFileLoader cl = new JarFileLoader(urls);
cl.addFile("/lib/poi3.10final.jar");
System.out.println("Second attempt...");
cl.loadClass("org.apache.poi.ss.usermodel.HssfSheet");
System.out.println("Success!");
} catch (Exception ex) {
System.out.println("Failed.");
ex.printStackTrace();
}
}
}
答案 0 :(得分:0)
这应该是评论,但我没有足够的位置。请不要投票。
我拿了一个存在于我机器上的随机罐子:
/home/adenoyelle/.m2/repository/antlr/antlr/2.7.2/antlr-2.7.2.jar
这个jar包含很多类。其中一个是antlr.ActionElement
。所以这是我在代码中改变的内容:
try {
System.out.println("First attempt...");
Class.forName("antlr.ActionElement"); //Changed this line
} catch (Exception ex) {
System.out.println("Failed.");
}
try {
URL urls[] = {};
JarFileLoader cl = new JarFileLoader(urls);
//Changed this line
cl.addFile("/home/adenoyelle/.m2/repository/antlr/antlr/2.7.2/antlr-2.7.2.jar");
System.out.println("Second attempt...");
cl.loadClass("antlr.ActionElement"); //Changed this line
System.out.println("Success!");
} catch (Exception ex) {
System.out.println("Failed.");
ex.printStackTrace();
}
输出:
First attempt...
Failed.
Second attempt...
Success!
我的猜测是你的罐子的路径是错误的。我通过提供绝对路径(并且您给出的路径也被解释为可能是问题的根源的绝对路径)以简单的方式完成了它。
请尝试以下方法: