2010-03-12 135 views
4

我想在weblogic(10.3.2.0)中創建和加載動態類。這是我部署到weblogic服務器的ADF應用程序。在weblogic上加載類路徑和類

當我打印

((GenericClassLoader)this.getClass().getClassLoader()).getFinderClassPath() 

我看到的路徑,我的目錄(當然不只是這條道路)

C:\...\system11.1.1.2.36.55.36\DefaultDomain\servers\DefaultServer\tmp\_WL_user\test\753the\dynamicClasses 

(我已經添加目錄dynamicClasses到清單部署WAR輪廓 )。 在這個目錄中我創建了類文件。我已經檢查過,文件真的在那裏創建。 當我嘗試使用相同的類加載器加載創建的類時,爲此我已經打印了classpath,引發了ClassNotFoundException。

它知道具有類和jar文件的目錄的路徑,但它不加載類。

使用URLClassLoader我可以加載類。但是我需要這樣才能讓我的類通過加載「常用」方式的類來看待。

我能夠正確運行它,只需系統CLASSPATH

請問,你知道一個解釋嗎? WAR中的清單文件是否用於指定類路徑的錯誤位置?

預先感謝您

Qjeta

+0

只是一個註釋:因爲我需要在運行時創建類,所以我需要知道將它們保存在哪裏(這使得方法getFinderClassPath)並加載它們(正確設置類路徑) – qjeta 2010-03-12 10:48:46

+0

您是否閱讀了解WebLogic Server應用程序類加載:http://download.oracle.com/docs/cd/E12840_01/wls/docs103/programming/classloading.html – 2010-03-13 16:19:16

+0

是的,但我還沒有找到答案爲我的問題。我可能會錯過什麼。 – qjeta 2010-03-15 11:44:32

回答

0

你有與後試圖削減

C:\ system11.1.1.2.36.55.36 \默認域\服務器\ DefaultServer \ tmp_WL_user \ test \ 753the \ dynamicClasses \

或者它只對通過MANIFEST文件給出的jar名稱起作用,而對目錄名稱不起作用。

+0

對於jar文件,它不起作用。尾部的斜線沒有幫助。 看起來來自清單文件的類路徑由於某種原因被忽略。 感謝您的回覆 – qjeta 2010-03-12 10:33:08

+0

要排除,最終的MANIFEST包裝在META-INF/right下? 你可以按照這個例子http://stackoverflow.com/questions/1272648/need-to-read-own-jars-manifest-and-not-root-classloaders-manifest並強制加載MANIFEST並檢查類路徑因爲它的屬性? – JoseK 2010-03-12 11:11:42

+0

我有包含戰爭的耳朵。在清單文件中都寫入我的目錄的類路徑。 getFinderClassPath()包含我的目錄的路徑,當清單fie在戰爭內時(ear的清單文件似乎沒有影響)。當我從所有清單文件打印出Class-Path屬性時,我的目錄沒有路徑 – qjeta 2010-03-12 12:48:40