在單獨的進程中執行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中文網其他相關文章!