Bonjour à tous
je suis débutante en java. Je voulais savoir si on peut faire appel à programme exe écrit en C++ dans du code java
si oui, merci de me dire comment???
Bonjour à tous
je suis débutante en java. Je voulais savoir si on peut faire appel à programme exe écrit en C++ dans du code java
si oui, merci de me dire comment???
Bonjour, ce que tu cherches est dans la http://java.developpez.com/faq/java/...icationExterne
Les composants SWING | Les layouts SWING | doc javase 6 | CORBA | XSLT | BDD Derby embarquée
Pensez au bouton une fois le problème résolu
Comment utiliser la fameuse balise CODE ?
Bonjour,
pour appeler un programme .exe quel que soit le langage:
pour appeler du code C, il faut utiliser JNI:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 java.lang.Runtime.exec(String[]);
http://java.sun.com/developer/online...CBook/jni.html
D'autres interactions programme java avec C sont possible comme d'utiliser des web-service ou du corba, mais c'est plus une architecture client-serveur.
merci pour vos réponses. Je vais tester et je vous tiens au courant
Si c'est une fonction en C ou C++ que tu veux appeler depuis java et non un .exe,
alors ton code C/C++ doit obligatoirement se trouver dans une DLL (ou .so sous unix).
Sinon il est imossible d'appeler une fonction d'un .exe.
Mais pour avoir tester JNI, y a pas plus chien et plus merdique
Si c'est de l'échange de donnée que tu veux faire entre les deux => fait du client/serveur par socket,
c'est plus simple. (ton serveur sera le programme en C/C++)
Re,
j'ai testé de cette façon, mais rien ne se produit. est ce que je dois placer mon exe quelque part dans le projet car là, j'ai juste indiqué le chemin dans la commande
try {
Process proc = Runtime.getRuntime().exec("/home/nina/Test/ ./monProgramme -i BaseC.txt -a 700 -d 0 res.txt");
} catch (IOException e1) {
}
merci de m'aider
AkH...je ne veux pas écrire du code C++ dans du code java. je veux juster invoquer un prog C++ à s'executer
il y a pas un truc bizard ?
j'aurais soit mis
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 /home/nina/Test/ ./monProgramme
soit
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 ./monProgramme.exe
après j'en suis pas sur
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 /home/nina/Test/monProgramme.exe
j'ai juste mis la commande que j'utilise habituellement en console pour éxecuter mon programme en C++ qui est la suivante :
./monProgramme -i BaseC.txt -a 700 -d 0 res.txt (sans sépcifier .exe)
pas de suggestion???
Je pense qu'il faut que tu regardes le chapitre V-B. Solution de http://ydisanto.developpez.com/tutoriels/j2se/runtime/
Les composants SWING | Les layouts SWING | doc javase 6 | CORBA | XSLT | BDD Derby embarquée
Pensez au bouton une fois le problème résolu
Comment utiliser la fameuse balise CODE ?
scuse pour le .exe (abutide de windob) et oui sous unix il y en a pas
je t'avourais que sans ton program je peu pas t'aider plus car j'ai jamais tenter d'appeler un prog
Mon message plus au n'etais pas tant pour le .exe mais pour le path:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 /home/nina/Test/ ./monProgramme
Il y a néanmoins des manières beaucoup plus propres (mais plus compliquées) de faire ça, en utilisant la programmation native.
Ceci permet entre autre de faire appel à des fonctions écrites en C/C++ en Java et inversément, ce qui peut s'avérer très pratique, si tu trouve par exemple que le Java est bien pour la majorité de ton application mais pas pour un petit morceau, tu peux écrire ce morceau en C et y faire appel comme si de rien n'était.
C'est très pratique parfois mais ça a ses inconéviants, comme par exemple la perte de la portabilité.
Je veux bien te taper un mini tutoriel si ça t'interesse mais là j'ai pas le temps donc si ça t'interesse envoie-moi un message privé pour me le rapeller (sinon je vais l'oublier lol).
On a toujours besoin d'un plus bourrin que soi
Oui il y a quelques bugs dans ma librairie de Sécurité, mais les classes postées ne sont pas celles de la dernière version, et j'ai la flemme de tout modifier. Je vous donnerai avec plaisir la dernière version du jar par mp.
apparement il a déjà fais son appli et veux juste l'appeler.
Donc c'est juste un problème de syntaxe pour appeler son prog avec les bon arguments.
Razgriz, je voulais moi aussi faire un tuto sur JNI (car c'est ultra casse couille quand tu t'y mes la première fois) mais idem, pas le temps.
Pour la portabilité, générer le code via gcc en .dll et en .so puis dans java, tester le system et charger la bonne librairie en fonction.
Déjà, faut pas préciser le folder dans le exec. Ou alors imaginons le folder complet), faut retirer ce sale espace qui traine au milieu .
Ensuite, çà:
C'est très très très mauvais. Si je donnais cours de java et qu'un de mes élève m'écrit çà, zéro pointé! Tu ignore purement et simplement l'erreur sans meme essayer de savoir ce que c'est
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 } catch (IOException e1) { }
remplace par ceci
Et donne nous l'erreur.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 } catch (IOException e1) { e1.printStackTrace(); }
Enfin, si ton application externe a besoin de données à tapper au clavier ou doit faire de l'output à l'écran, faut pas oublier qu'en java c'est à toi de le faire (récupération des input/output sur le Process retourné par exec)
toujours pas de solution....tchize, ça fait exactement une semaine que je mets à programmer en java (ce qui explique ma note "zéro)
mais je désespère pas : voilà l'erreur sachant que j'ai supprimé le vilain espace
Il ne trouve pas le chemin je ne comprends pas pourquoi???
java.io.IOException: Cannot run program "home/nina/Test/./monProgramme -i BaseC.txt -a 700 -d 0 res.txt": java.io.IOException: error=2, No such file or directory
at java.lang.ProcessBuilder.start(Unknown Source)
at java.lang.Runtime.exec(Unknown Source)
at java.lang.Runtime.exec(Unknown Source)
at mv.QuitterMenu.actionPerformed(QuitterMenu.java:22)
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.AbstractButton.doClick(Unknown Source)
at javax.swing.plaf.basic.BasicMenuItemUI.doClick(Unknown Source)
at javax.swing.plaf.basic.BasicMenuItemUI$Handler.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.pumpOneEventForFilters(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(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)
Caused by: java.io.IOException: java.io.IOException: error=2, No such file or directory
at java.lang.UNIXProcess.<init>(Unknown Source)
at java.lang.ProcessImpl.start(Unknown Source)
... 31 more
voilà j'ai résolu le problème, il fallait utilser un String[] args pour utiliser une commande avec des paramétres et puis passer chaque paramétre entre " "
merci à vous tous pour votre aide
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 Runtime runtime = Runtime.getRuntime(); String[] args = {"/home/nina/Test/./monProgramme", "-i", "/home/nina/Test/b.txt", "-o", "fichier.txt"}; final Process process = runtime.exec(args);
voilà j'ai résolu le probléme, il fallait utliser un String[] args pour passer une commande avec des paramétres dans des " "
merci à vous tous pour votre aide
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 Runtime runtime = Runtime.getRuntime(); String[] args = {"/home/nina/Test/./monProgramme", "-i", "/home/nina/Test/input.txt", "-o", "output.txt"}; final Process process = runtime.exec(args);
manque visiblement un / en début de commande
te dira aussi qu'il trouve pas
Code : Sélectionner tout - Visualiser dans une fenêtre à part ls home/nina/Test/./monProgramme
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager