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é
Code : Sélectionner tout - Visualiser dans une fenêtre à part
Runtime.getRuntime().exec("java -jar monjar.jar");
mais aussi
Code : Sélectionner tout - Visualiser dans une fenêtre à part
Desktop.getDesktop().open(new File("chemin\du\jar.jar));
ou encore
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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