我試圖從JAR文件中使用反射加載一個類。該JAR文件有一個實現不同JAR文件中的接口的類。包含該接口的JAR文件由項目知道,因爲它位於其構建路徑中。這個JAR文件也在JBoss 6的兩個文件夾中,分別是「client」和「common/lib」。用反射在JBoss 6中加載JAR文件
當我嘗試使用類java.net.URLClassLoader的loadClass方法動態加載類來創建對象時,會發生問題。關於項目和JAR文件共享的接口,拋出ClassNotFoundException。我通過以下方法獲得的ClassLoader:
public static ClassLoader getClassLoader(final String fileName) {
final File file = new File(fileName);
URL url;
ClassLoader classLoader = null;
try {
url = file.toURL();
final URL[] urls = new URL[]{url};
classLoader = new URLClassLoader(urls);
} catch (MalformedURLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return classLoader;
}
我因爲類是File變量,它包含對JAR,這是不是在JBoss中引用加載使用這個類加載器的類。
我是否必須將JAR與接口包含在JBoss的不同文件夾中?
你如何得到你的URLClassLoader實例?你有沒有嘗試:java.lang.Thread.getContextClassLoader()。loadClass()? – 2012-07-21 19:38:32
我試圖以這種方式,但該類不在當前線程中,它在JAR文件中。我編輯了這個問題以提供更多信息。 – 2012-07-22 10:23:17