Bonjour à tous ceci est mon premier message sur ce forum et il est presque plus windows que java car développant principalement sous mac j'avoue volontiers de nombreuses lacunes sous windows.
Voila j'ai créé un lanceur en java pour mes programmes qui va rechercher les différents répertoires sur la machine de l'utilisateur ainsi sont définies le classpath, le repertoire de travail LD = launchDirectory) et le repertoire des librairies natives = ND
sous mac tout se passe bien j'execute :
1 2 3 4 5
| String scriptshell = "cd "+ LD +"; java " +classpath+ " -Djava.library.path=" + ND + " com.monserveur.Server >& file_path &";
String[] command ={"/bin/bash","-c",scriptshell};
Runtime runtime = Runtime.getRuntime();
final Process process = runtime.exec(command); |
Evidemment les variables classpath LD et ND sont calculés différemment sous mac et windows ( les joies des \\ ).
Sous windows si je lance
1 2 3
| String scriptshell = "java" +classpath+" -Djava.library.path=" + ND + " com.monserveur.Server"
String[] command ={"cmd.exe","/c",scriptshell};
Runtime runtime = Runtime.getRuntime(); |
Tout cela marche malheureusement pour des problemes de compatibilités maximales il faut que je me place dans le repertoire de travail (LD).
Sous windows dés que je mets
scriptshell = "cd " +LD+"; java" +classpath+" -Djava.library.path=" + ND + " com.monserveur.Server"
Cela ne marche plus.
En d'autres termes comment remplacez vous le ";" qui fait que mes deux commandes sont exécutés successivement à l'intérieur du même shell sous leopard.
Merci de vos réponses et longue vie à ce forum
Partager