Im Bereich der Java-Programmierung ist es oft notwendig, Anwendungen in einem separaten Prozess auszuführen. Während die herkömmliche Methode zur Verwendung von Runtime.getRuntime().exec() praktisch ist, leidet sie unter der Plattformspezifität. Dieser Artikel schlägt eine Lösung vor, die diese Einschränkung behebt und einen tragbareren Ansatz bietet.
Zusammenfassung des Problems:
Kann eine Java-Anwendung in einem separaten Prozess gestartet werden? auf seinem Namen und nicht auf seinem Standort, unabhängig von der zugrunde liegenden Plattform?
Vorgeschlagene Lösung:
Die Lösung nutzt Java-Systemeigenschaften, um die notwendigen Informationen zum Aufbau der Ausführung abzuleiten Befehl. Das folgende plattformunabhängige Code-Snippet zeigt, wie Sie dies erreichen:
<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>
Verwendung:
Um eine Java-Anwendung mit dem vorgeschlagenen Ansatz auszuführen, befolgen Sie diese Schritte:
Beispiel:
<code class="java">int status = JavaProcess.exec(MyClass.class, args);</code>
Vorteile:
Das obige ist der detaillierte Inhalt vonKönnen Java-Anwendungen unabhängig von der Plattform in einem separaten Prozess basierend auf ihrem Namen gestartet werden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!