Bonjour,
Je suis en train de créé une application java console qui est démarré par un launcher console (aussi java), qui vérifie si il y a des mise a jour et démarre automatiquement le programme.
Le problème est que j'ai essayé toutes les possibilités que j'ai trouvé pour démarrer un jar de depuis un programme java mais aucune ne marche sauf une mais qui n'arrive pas à gérer les Scanner. (celle-ci utilise des BufferedReader, voir en bas)
J'ai essayé
Runtime.getRuntime().exec("java -jar monjar.jar");
mais aussi
Desktop.getDesktop().open(new File("chemin\du\jar.jar));
ou encore
1 2 3
| ProcessBuilder pb = new ProcessBuilder("java", "-jar", "monjar.jar");
pb.directory(new File("chemin\du\dossier\du\jar"));
Process p = pb.start(); |
mais rien ne marche.
Code de la fonction qui marche mais qui ne gère pas les scanner
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38
|
public class JarRunner {
public JarRunner(String file) {
ProcessBuilder pb = new ProcessBuilder("java", "-jar", "monjar");
pb.directory(new File("jar"+File.separator));
try {
Process p = pb.start();
LogStreamReader lsr = new LogStreamReader(p.getInputStream(), p.getOutputStream());
Thread thread = new Thread(lsr, "LogStreamReader");
thread.start();
} catch (IOException e) {
e.printStackTrace();
}
}
}
class LogStreamReader implements Runnable {
private BufferedReader reader;
public LogStreamReader(InputStream is, OutputStream os) {
this.reader = new BufferedReader(new InputStreamReader(is));
}
public void run() {
try {
String line = reader.readLine();
while (line != null) {
System.out.println(line);
line = reader.readLine();
}
reader.close();
} catch (IOException e) {
e.printStackTrace();
}
}
} |
Merci d'avance pour vos réponse
Partager