Exécution d'une application Java dans un processus séparé, simplifiée
La possibilité d'exécuter une application Java dans un processus distinct, indépendant de son emplacement , est une fonctionnalité précieuse pour la compatibilité multiplateforme. Cependant, les approches traditionnelles utilisant Runtime.getRuntime().exec(COMMAND) peuvent être spécifiques à la plate-forme.
Pour résoudre ce problème, envisagez la solution améliorée suivante :
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(); } }
Utilisation :
int status = JavaProcess.exec(MyClass.class, args);
Cette approche exploite les propriétés du système Java pour obtenir les chemins nécessaires et utilise un ProcessBuilder pour la création de processus indépendants de la plate-forme. Il accepte le nom de classe complet et fournit le comportement indépendant de la plate-forme souhaité.
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!