2014-12-19 32 views
0

是否可以在jar文件外加載一個類。在java中的jar文件之外實例化一個類?

  • Janibot //主目錄
    • 的lib //子目錄
      • Robot.java
      • Robot.class
    • Janibot.jar //子目錄

以上是目錄結構。我想要做的是在使用Class.forName運行Janibot.jar時實例化一個Robot類,但它總是返回一個Classnotfoundexception。

我的計劃是編輯Robot.java在JTextArea並在運行時編譯它,然後實例化一個Robot.class

+0

你可以不包括另一個jar作爲庫嗎?這將是一個更清潔的解決方案。 – christopher 2014-12-19 01:40:07

+0

@christopher no sir,因爲我的計劃是在JtextArea中編輯Robot.java並在運行時編譯它,然後調用Robot.class – user3276091 2014-12-19 01:43:37

+1

不知道這是否可行。如果啓動JVM時Robot.class文件不存在,則稍後可能不會拾取它。 – EJK 2014-12-19 01:46:35

回答

2

是的,只要你使用的是標準的Java *,然後其中一類是部署(jar文件,鬆散類)無關緊要。重要的是,您可以在類路徑中啓動包含所有相關類目錄和jar文件的應用程序。

假設你是在項目(Janibot)的根目錄下,下面的java命令將做到這一點:

java -classpath ./lib:./janibot.jar <class_to_execute> 

(* OSGI將是一個例外OSGI使用不同的類加載器使用。一個不同的規則集,但我認爲這不是在這裏的圖片)