2013-10-06 72 views
2
String pathToJar = "C:\\Users\\dtn\\jb_workspace\\helloworld-mdb\\target\\jboss-as-helloworld-mdb.war"; 

URL[] urls = { new URL("jar:file:///" + pathToJar+"!/") }; 
URLClassLoader urlcl = new URLClassLoader(urls); 
urlcl.loadClass("org.jboss.as.quickstarts.mdb.HelloWorldTopicMDB"); 

我得到的例外是:的ClassLoader的loadClass拋出ClassNotFoundException的

Exception in thread "main" java.lang.ClassNotFoundException: org.jboss.as.quickstarts.mdb.HelloWorldTopicMDB 

當我調查到的問題,我看到了HelloWorldTopicMDB.class文件存儲WEB-INF/classes目錄內。

難道這不知何故是問題的根源?由於我嘗試了其他jar文件,並在jar目錄結構的根目錄下有包名,所以沒有錯誤。

非常感謝您的回覆。

回答

2

在一個合適的war文件中,編譯的類總是在WEB-INF/classes中,運行時需要的jar在WEB-INF/lib中。

這絕對是你的問題的原因。這個resource應該可以幫助你從war文件中加載類。

我必須說,雖然這似乎是非正統的。通常web服務器從war文件中加載類。我能問你爲什麼這樣做嗎?

無論如何,希望這有助於。

+0

謝謝!這個對我有用。我想從戰爭文件(註釋,方法名稱..)中獲取信息並顯示它。所以我需要加載戰爭文件類。 –

相關問題