Dans le domaine de la programmation Java, il est souvent nécessaire d'exécuter des applications dans un processus distinct. Bien que la méthode traditionnelle d'utilisation de Runtime.getRuntime().exec() soit pratique, elle souffre des spécificités de la plate-forme. Cet article propose une solution qui répond à cette limitation et propose une approche plus portable.
Synopsis du problème :
Une application Java peut-elle être lancée dans un processus distinct basé sur sur son nom plutôt que sur son emplacement, quelle que soit la plateforme sous-jacente ?
Proposé Solution :
La solution utilise les propriétés du système Java pour dériver les informations nécessaires à la construction de la commande d'exécution. L'extrait de code indépendant de la plate-forme ci-dessous montre comment y parvenir :
<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>
Utilisation :
Pour exécuter une application Java à l'aide de l'approche proposée, suivez ces étapes :
Exemple :
<code class="java">int status = JavaProcess.exec(MyClass.class, args);</code>
Avantages :
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!