2014-01-28 1 views
-4

Я делаю программу для компьютерного наблюдения на данный момент. Это для соревнований в моей стране Хорватия (InfoKup).Создание программных расширений

У меня есть несколько вариантов отправки команды на другой компьютер, но я хочу, чтобы возможность расширения команд для людей , которые знают Java. Поэтому я хочу, чтобы пользователь мог добавить некоторые из своих пользовательских команд для программы. Например, что-то вроде Моды Minecraft. Я знаю, что это возможно, но как мне это сделать, .

Любая помощь была бы принята с благодарностью. Мой код на GitHub: GitHub Не обращайте внимание на поток.
Это то, с чем мой друг экспериментирует.

EDIT:, например,

В настоящее время у меня есть возможность отправлять всплывающие окна на другой компьютер. Что делать, если разработчик расширения знал код для отправки команд cmd и хочет добавить эту функцию. Он делает расширение и помещает его в папку расширения. У Воилы есть новая возможность.

EDIT 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(); 
    } 
    } 

EDIT: проблема легко разрешима с помощью Java Reflection! Мне жаль, что кто-то не опубликовал это как ответ, но напомнил вопрос, потому что pf - ссылка GitHub, которая была там, чтобы обеспечить, что я действительно что-то сделал.

+3

НЕМНОГО широкая, может быть, вы могли бы включать некоторые фрагменты кода, которые имеют отношение и пример псевдо того, что вы хотите, чтобы пользователи смогли делать? – turbo

+0

Вы хотите отправить команды, такие как команды Unix, на другой компьютер? –

+0

_Примечание: _ Никто не будет копать ваш код, чтобы ответить на ваш вопрос. – svenwltr

ответ

0

Эта вещь может быть достигнута с помощью Java Reflection!

Как загрузить и вызвать метод на внешнем банке:

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[]{}});