在具有平台獨立性的單獨進程中執行Java 應用程式
在Java 開發領域,有必要在單獨的進程中執行應用程序,同時保持平台獨立性。這就提出了一個問題:Java 應用程式是否可以透過指定其完全限定名稱來載入到單獨的進程中,超越平台限制?
目前限制
傳統上,Java應用程式使用 Runtime.getRuntime().exec(COMMAND) 方法執行,該方法呼叫特定於平台的命令。這種方法對跨平台相容性提出了挑戰。
理想的解決方案
理想的場景將涉及一個簡化的方法,該方法接受應用程序類名稱並在一個單獨的過程,如以下構造所顯示:
EXECUTE.application(CLASS_TO_BE_EXECUTED);
獨立於平台的方法
從先前的回應中汲取靈感,我們可以利用Java 的系統屬性以獨立於平台的方式獲取有關Java 命令路徑和類別路徑的重要資訊。以下程式碼片段示範了這種方法:
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(); } }
要呼叫此方法,您可以使用一個簡單的命令:
int status = JavaProcess.exec(MyClass.class, args);
透過傳遞實際的類別而不是其字串表示形式,我們利用類別必須已存在於類別路徑中這一事實才能使此方法成功。
以上是Java應用程式可以在獨立於平台的單獨進程中執行嗎?的詳細內容。更多資訊請關注PHP中文網其他相關文章!