2014-01-28 35 views
-4

我正在製作一個計算機監視程序。 這是在我的國家克羅地亞(InfoKup)的比賽。製作程序擴展

我有幾種發送命令到另一臺PC的選項,但是我想讓使用 的人知道Java的命令擴展的可能性。所以我想讓用戶能夠爲程序添加他的一些 自定義命令。例如像 Minecraft mods。我知道這是可能的,但我怎麼會去做 這樣做。

任何幫助將不勝感激。我在GitHub上的代碼:GitHub 不介意流媒體。
這是我的朋友正在試驗的東西。

編輯:例如

目前我有可能將彈出窗口發送到另一臺PC。如果擴展製造商知道發送cmd命令的代碼並想添加該功能,該怎麼辦?他做了一個擴展名並將其放入擴展文件夾中。瞧,我們有一個新的可能性。

編輯2:

不要那麼苛刻了我請:)。 Thx爲動態類加載提示。我一直在研究這個,看起來很有希望。

基本上我想要的可能是用戶在「mod/extension/whatever」文件夾中放置「mod/extension/whatever」,程序將加載它並將所有在上課到GUI,並與他們的功能。我想我已經掌握了這一點,但任何提示都會有所幫助。

例如

package sth.sth; 

    import blah.blah.*; 

    public class ClassSTH extends SchoolarButton{ 
    public ClassSTH(String params){ 
     super(params); 
    } 

    @Override 
    public void OnClick(){ 
     doStuff(); 
    } 
    } 

編輯: 這個問題很容易使用Java反射解決!我希望有人發佈這樣一個回答,作爲一個回答blaf降低一個問題,因爲一個GitHub鏈接,這表明我已經做了一些事情。

+3

有些寬泛,也許你可以加入一些代碼片段相關的和你想要的用戶能夠以什麼僞例子做? – turbo

+0

您是否想要將諸如Unix命令等命令發送到另一臺計算機? –

+0

_注意:_沒有人會挖掘你的代碼來回答你的問題。 – svenwltr

回答

0

這種事情可以通過使用Java反射!

如何加載和外部的jar調用一個方法:

File f = new File("plugin.jar"); 
URLClassLoader cl = new URLClassLoader(new URL[]{f.toURI().toURL(), null}); 
Class<?> clazz = cl.loadClass("epicurus.Client"); 
Method main = clazz.getMethod("main", String[].class); 
main.invoke(null, new Object[]{new String[]{}});