在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中文網其他相關文章!