Java プログラミングの領域では、多くの場合、アプリケーションを別のプロセスで実行する必要があります。 Runtime.getRuntime().exec() を使用する従来の方法は便利ですが、プラットフォームの特性に問題があります。この記事では、この制限に対処し、より移植性の高いアプローチを提供するソリューションを提案します。
問題の概要:
Java アプリケーションは、ベースの別のプロセスで起動できますか?基礎となるプラットフォームに関係なく、場所ではなく名前に基づいていますか?
提案されたソリューション:
このソリューションは、Java システム プロパティを利用して、実行を構築するために必要な情報を取得します。指示。以下のプラットフォームに依存しないコード スニペットは、これを実現する方法を示しています。
<code class="java">import java.io.IOException; import java.util.List; import java.util.LinkedList; public final class JavaProcess { private JavaProcess() {} public static int exec(Class klass, List<String> args) throws IOException, InterruptedException { 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(); List<String> command = new LinkedList<>(); command.add(javaBin); command.add("-cp"); command.add(classpath); command.add(className); if (args != null) { command.addAll(args); } ProcessBuilder builder = new ProcessBuilder(command); Process process = builder.inheritIO().start(); process.waitFor(); return process.exitValue(); } }</code>
使用法:
提案されたアプローチを使用して Java アプリケーションを実行するには、次の手順に従います。
例:
<code class="java">int status = JavaProcess.exec(MyClass.class, args);</code>
利点:
以上がJava アプリケーションは、プラットフォームに関係なく、その名前に基づいて別のプロセスで起動できますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。