[débutant][API][Système] Exécuter une application depuis un programme Java
Bonjour. j'ai besoin de lancer une application (Access) depuis mon programme. J'ai essayé de procéder avec la ligne de code trouvée sur ce site mais ca ne marche pas. Est ce que quelqu'un peut m'aider?
Voici le code que j'ai essayé:
Code:
1 2 3 4 5
| try {
Process p = Runtime.getRuntime().exec("cmd.exe bdd_CB.mdb");
} catch (IOException e) {
e.printStackTrace();
} |
exécution d'une application depuis java
j'ai essayé mais ça ne marche pas... voici l'erreur :
Code:
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
|
java.io.IOException: CreateProcess: start bdd_CB.mdb error=2
at java.lang.ProcessImpl.create(Native Method)
at java.lang.ProcessImpl.<init>(Unknown Source)
at java.lang.ProcessImpl.start(Unknown Source)
at java.lang.ProcessBuilder.start(Unknown Source)
at java.lang.Runtime.exec(Unknown Source)
at java.lang.Runtime.exec(Unknown Source)
at java.lang.Runtime.exec(Unknown Source)
at interface_java.Gestion_bouton.actionPerformed(Gestion_bouton.java:38)
at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source)
at java.awt.Component.processMouseEvent(Unknown Source)
at javax.swing.JComponent.processMouseEvent(Unknown Source)
at java.awt.Component.processEvent(Unknown Source)
at java.awt.Container.processEvent(Unknown Source)
at java.awt.Component.dispatchEventImpl(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Window.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source) |
avec ce code là :
Process p = Runtime.getRuntime().exec("start bdd_CB.mdb");
Re: [débutant] Exécuter une application depuis un programme
Salut,
Citation:
Envoyé par Martin Guélat
J'ai essayé de procéder avec la ligne de code trouvée sur ce site mais ca ne marche pas.
Tu pourrais donner l'URL ? parce que si le code est faux on pourra le corriger...
Sinon "cmd.exe bdd_CB.mdb" ne veux rien dire car cmd n'interprètera pas son paramètre dans ce cas, et "start bdd_CB.mdb" ne peut fonctionner que dans une console MsDos car c'est une commande interne de "cmd.exe".
Donc il faudrait faire :
Code:
cmd /C "start bdd_CB.mdb"
Soit en Java :
Code:
1 2 3 4 5
| Process p = Runtime.getRuntime().exec( new String[] {
"cmd.exe", // commande
"/C", // paramètre 1
"start bdd_CB.mdb", // paramètre 2
}); |
Normalement il faut lire/écrire dans les flux d'entrée/sortie du programme appellée, mais comme Access ne doit pas les utiliser il vaut mieux les fermer :
Code:
1 2 3
| p.getInputStream().close();
p.getOutputStream().close();
p.getErrorStream().close(); |
Pour finir je te fait remarquer que ce code n'est pas du tout portable, et qu'il serait peut-être préfférable d'utiliser la biliothèque JDIC (une petite recherche sur le forum pour plus de détail).
a++