我有一個可以通過符合給定接口的java類擴展的應用程序。 如果我運行命令行類的節目,我可以用實例化的附加類:程序從jar執行時的動態加載問題
Class.forName("myAddon").newInstance();
但是如果我罐子應用(正確設置主類),我得到一類不發現異常。任何人都可以點亮這裏發生的事情嗎?
TIA, 亞當
我有一個可以通過符合給定接口的java類擴展的應用程序。 如果我運行命令行類的節目,我可以用實例化的附加類:程序從jar執行時的動態加載問題
Class.forName("myAddon").newInstance();
但是如果我罐子應用(正確設置主類),我得到一類不發現異常。任何人都可以點亮這裏發生的事情嗎?
TIA, 亞當
我設法得到這個工作使用的URLClassLoader,指定搜索路徑是當前目錄如下:
URLClassLoader cl = new URLClassLoader(new URL[] {new File(".").toURI().toURL()});
感謝您的幫助,
亞當
難道你不能把類文件放入jar嗎? (順便說一句:'URLClassLoader.newInstance'稍微好點。) – 2009-10-21 16:48:07
好點 - 謝謝。 – apchester 2009-10-28 14:32:10
你要找的類不是在類路徑中。如果它在一個目錄
即 MyClass.class MyJar.jar
你需要做的:
java -classpath . -jar MyJar.jar
但實際上,我們需要更多的信息來回答這個問題。在jar清單中設置的主要類是什麼?你的類路徑是什麼?你如何指定加載哪個類?
Hi Rob, 當我指定-jar時,我認爲classpath標誌在命令行上被忽略。 WRT你的問題,類路徑只是默認的類路徑 - 沒有設置額外的參數。 清單中定義的主類是com.mycompany.Main,當錯誤在類的主要方法中拋出時,它正在正常工作。 要加載的類被指定爲命令行參數。 Adam – apchester 2009-10-21 13:33:23
您或者需要在JAR的清單中指定需要的類路徑,或者只需使用java -cp調用該類就可以了。com.mycompany.Main – 2009-10-21 13:39:12
該類是否被加載到默認的類路徑中? – 2009-10-21 14:30:22
如何你在命令行上指定jar嗎? – akf 2009-10-21 13:20:19
java -jar Myprogram.jar <要加載的類> – apchester 2009-10-21 13:35:35