我試圖從坐在我的桌面目錄中的一些編譯的類文件加載類對象。加載外部類文件,而不考慮類路徑或包
我在我的程序中給主要兩個參數餵食,它使用URLClassLoader
從編譯文件TheClassToLoad.class
獲得一個類的實例。
我,在類裝入程序的主:(args[0] is for something unrelated)
String classFile_FilePath = args[1];
String className = args[2];
URL classUrl = new URL(classFile_FilePath);
URLClassLoader ucl = new URLClassLoader(new URL[]{classUrl});
當從shell中運行該程序時在項目目錄:
Me:ClassLoadingProgramRootDir Me$ java com.company.Main argZero file:///Users/Me/Desktop/ TheClassToLoad.class
我發現引發異常:
線程「main」中的異常java.la ng.ClassNotFoundException:TheClassToLoad.class
因此,有在Desktop/
文件TheClassToLoad.class
但URLClassLoader
拋出一個異常,而不提供我需要調試的情況的詳細信息。
我是Java新手,知道像com.company.Class
這樣的類路徑經常需要引用基於包目錄結構的類的真實類名。然而,在這種情況下,我只是要求URLClassLoader
給我一個位於機器某處的任意編譯類文件的類對象實例。
如果您的班級有'包'語句,您在嘗試加載和使用時需要尊重它。 – bmargulies