3

私のメイン プログラムでは、ユーザーが Java クラスを作成し.java、パッケージ内のファイルに格納できるようにしていますUserInputs。現在、ユーザーが作成したクラスをメイン プログラム内でインスタンス化し、クラス内でパブリック メソッドを実行する方法を探しています。

JButtonユーザーが a を押してクラスの作成を終了したときに実行されるコードを次に示します。

public void actionPerformed(ActionEvent e) {

    if(e.getSource() == inputButt.getButtons()){
        try{

            PrintWriter writer = new PrintWriter("C:/Users/human/Desktop/UserInputTest/src/UserInputs/UserCreatedClass.java", "UTF-8");
            writer.println(textArea.getText());
            writer.close();

        }catch(Exception except){
            except.printStackTrace();
        }
    }   
}
4

2 に答える 2

0

実行時にファイルをコンパイルする必要があります。たぶん、SO に関するthisまたはthisの投稿が役に立ちます。

最初のリンクは、Java 6 Compiler API を使用する必要があることを示しています。あなたがする必要があるのはこれです:

JavaCompiler compiler = ToolProvider.getSystemJavaCompiler();
int compilationResult = compiler.run(null, null, null, fileToCompile);

ファイルへのパスはどこですかfileToCompile。あなたの場合は「C:/Users/human/Desktop/UserInputTest/src/UserInputs/UserCreatedClass.java」です。次に、リフレクションを介してコードを実行できます。

ただし、人々が独自の Java コードを作成して実行できるようにすることには、細心の注意を払っています。何をするつもりかはわかりませんが、このコードをサーバーで実行している場合、そのようなことはお勧めしません。このアプリケーションがクライアント コンピューター上でローカルに実行される場合 (そのため、自分自身に害を及ぼすだけです)、これは問題になりません。そうでなければ、私は彼らが望むものをプログラムさせません。

于 2013-11-13T18:14:57.587 に答える