簡略化された別のプロセスでの Java アプリケーションの実行
場所に関係なく、別のプロセスで Java アプリケーションを実行する機能、クロスプラットフォーム互換性にとって貴重な機能です。ただし、Runtime.getRuntime().exec(COMMAND) を使用する従来のアプローチはプラットフォーム固有になる可能性があります。
この問題に対処するには、次の拡張ソリューションを検討してください:
public final class JavaProcess { private JavaProcess() {} public static int exec(Class klass, List<String> args) throws IOException, InterruptedException { // Determine platform-independent paths String javaHome = System.getProperty("java.home"); String javaBin = javaHome + File.separator + "bin" + File.separator + "java"; String classpath = System.getProperty("java.class.path"); String className = klass.getName(); // Create process builder ProcessBuilder builder = new ProcessBuilder(); // Set command and arguments builder.command().addAll(Arrays.asList(javaBin, "-cp", classpath, className)); builder.command().addAll(args); // Execute and return exit status Process process = builder.inheritIO().start(); process.waitFor(); return process.exitValue(); } }
使用法:
int status = JavaProcess.exec(MyClass.class, args);
このアプローチでは、Java システム プロパティを利用して必要なパスを取得し、プラットフォームに依存しないプロセスの作成に ProcessBuilder を利用します。完全修飾クラス名を受け入れ、プラットフォームに依存しない望ましい動作を提供します。
以上がクロスプラットフォーム互換性のために Java アプリケーションを別のプロセスで実行するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。