1
我正在嘗試從classLoader的jar文件中加載類。這裏是我的代碼:從jar文件中加載類時發生java.lang.ClassNotFoundException
private void loadJar(String path, String className) {
try {
File file = new File(path);
if (!(file.exists())) {
log.error("JAR File not found!");
return;
}
String anUrl = "jar:file://" + file.getAbsolutePath() + "!/";
URL[] urls = { new URL(anUrl)};
URLClassLoader classLoader = new URLClassLoader(urls);
System.out.println("className: "+className);
Class aClass = classLoader.loadClass(className);
if (!(isNullaryConstructor(aClass))) {
System.out.println("Non nullary Constructor detected!");
return;
}
Object anInstantiation = aClass.newInstance();
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (InstantiationException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SecurityException e) {
e.printStackTrace();
} catch (IllegalArgumentException e) {
e.printStackTrace();
}
}
我在一個帶有主類的測試工作區中試過它。它的工作原理。
但是,當我將它集成到我的項目中。我獲得了此錯誤:
java.lang.ClassNotFoundException
我正在使用Maven。我必須在依賴中添加一些東西嗎?
我列出了出現在我的jar文件中的類,以驗證的className與此代碼正確:
public static void main(String[] args) throws Exception {
JarFile jf = new JarFile(new File(jarPath));
Enumeration<JarEntry> e = jf.entries();
while (e.hasMoreElements()) {
JarEntry entry = e.nextElement();
System.out.println(entry.toString());
}
jf.close();
}
我輸入的名稱是正確的。
任何幫助,請!
謝謝:)