Bonjour,
Comment faire pour lancer une app avec une ligne de code java ? Itunes par exemple ?
s'il vous plait :)
Il ne se passe rien quand je fais
Code:
1
2
3 try{ Runtime.getRuntime().exec("open Applications/iTunes.app"); }catch...
Version imprimable
Bonjour,
Comment faire pour lancer une app avec une ligne de code java ? Itunes par exemple ?
s'il vous plait :)
Il ne se passe rien quand je fais
Code:
1
2
3 try{ Runtime.getRuntime().exec("open Applications/iTunes.app"); }catch...
D'abord, tu dois mettre le chemin complet vers l'application, donc un truc du style /Applications/iTunes.app.
Ensuite, si c'est toujours comme il y a 6 ans quand j'ai fais du dev java sous mac, iTunes.app n'est qu'un répertoire. Le browser d'apple comprend ça comme une application, mais ca reste un répertoire. C'est à l'intérieur de ce répertoire que se trouve l'exécutable, que tu dois viser avec exec().
D'apres How to run a Mac application From Java?, on peut utiliser l'intégration Desktop pour lancer des répertoires app :
Code:Desktop.getDesktop().open(new File("MyLineInInput.app"));
Merci beaucoup, j'utilise ça en effet, mais ça fonctionne pas en plein écran le raccourcis s'ouvre pas alors que sinon il s'ouvre :(
Voila ma frame :Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23 fatigueButton.addActionListener ( new ActionListener () { //JOptionPane.showMessageDialog(null, l); //JLabel l = new JLabel( // "The quick brown fox jumps over the lazy dog. 0123456789"); @Override public void actionPerformed(ActionEvent e) { Date now = new Date(); SimpleDateFormat format = new SimpleDateFormat("HH");//dd MM yyyy à String heure = format.format(now).toString(); int heurei = Integer.parseInt(heure); if(heurei>17&&heurei<0){ try { File myFile = new File("/Users/THEO/Applications/iTunes.app"); Desktop.getDesktop().open(myFile); } catch (IOException ex) { // no application registered for PDFs } } //Si 2h du matin alors String shutdownCommand; onglets.setSelectedIndex(1); } });
Code:
1
2
3
4
5
6
7
8 frame.setLocationByPlatform(true); frame.pack(); frame.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE); frame.setExtendedState(JFrame.MAXIMIZED_BOTH); frame.getRootPane().setWindowDecorationStyle(JRootPane.NONE); frame.setAlwaysOnTop(true); GraphicsEnvironment.getLocalGraphicsEnvironment().getScreenDevices()[0].setFullScreenWindow(frame); frame.setVisible(true);
En effet mais, comme "start" sous windows et "xdg-open" sous Linux, la commande "open" analyse le type de ce qui lui est passé en paramètre pour l'exécuter directement ou l'ouvrir avec le logiciel associé.
Il sait donc entre autre traiter les répertoires d'application et saura démarrer l'exécutable correspondant.
Tu es sur qu'il ne s'ouvre pas simplement en arrière plan, et que tu ne le vois pas car tu es en plein écran?
Sinon tu devrais au moins mettre un ex.printStackTrace(); dans ton catch. Les catch vide sont généralement une très mauvaise pratique qui font disparaitre des messages d'erreur utiles.