0

スクリプトの使用をボタン付きの GUI に変換して何かを構築するプログラムを作成しています。スクリプトが行うことの 1 つは、jar ファイルをロードし、この jar 内の特定のクラスを引数を付けて実行することです。スクリプトでは、次のように実行されます。

java -classpath "/path/to/some/classes/" com.company.app.App -i -e

クラス パス内の追加のクラスは、実行中のクラス ファイルが配置されている場所です。これは、アプリケーションのユーザーごとに異なります。

私が考えたアプローチは、プロセスを構築し、これを ProcessBuilder クラスで実行することです。

List<String> command = Arrays.asList("java", "-classpath", "/path/to/some/classes/", "com.company.app.App", "-i", "-e");
ProcessBuilder pb = new ProcessBuilder(command);
Process p = pb.start();

Java内でこれに対するより実用的なアプローチはありますか?

4

2 に答える 2

0

開始プログラムに値を渡す必要がない場合はDesktop、次のようなオブジェクトを使用できます。

Desktop.getDesktop().open(new File("/Desktop/jarfile.jar"));

シンプルで簡単な方法で、何度も役に立ちました。それが役に立てば幸い。

編集:-デスクトップがサポートされているかどうかを確認するには、次を使用します

if(Desktop.isDesktopSupported()){ 
//open
}
于 2013-09-17T14:01:42.227 に答える
0

クラスを動的に呼び出す疎結合が本当に必要かどうかを尋ねる必要があるかもしれません。jar はクラスパス上にあるため、クラスの場合と同様に、コード内でクラスのインスタンスを作成するだけです。もちろん、これにはコンパイル手順に jar が必要ですが、これは正常です。

本当に動的呼び出しが必要であると判断した場合は、InitialContext http://docs.oracle.com/javase/7/docs/api/javax/naming/InitialContext.htmlを使用して JNDI 経由で呼び出しを行う必要があります。

追加の JNDI リファレンス: http://docs.oracle.com/javase/tutorial/jndi/

于 2013-09-17T14:07:30.117 に答える