IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Java Discussion :

appel d'un programme c++ en java


Sujet :

Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé

    Inscrit en
    Août 2007
    Messages
    308
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 308
    Billets dans le blog
    1
    Par défaut appel d'un programme c++ en java
    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???

  2. #2
    Membre Expert
    Avatar de CheryBen
    Inscrit en
    Mai 2005
    Messages
    1 599
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Mai 2005
    Messages : 1 599
    Par défaut
    Bonjour, ce que tu cherches est dans la http://java.developpez.com/faq/java/...icationExterne

  3. #3
    Membre expérimenté
    Inscrit en
    Mai 2007
    Messages
    335
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 335
    Par défaut
    Bonjour,
    pour appeler un programme .exe quel que soit le langage:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    java.lang.Runtime.exec(String[]);
    pour appeler du code C, il faut utiliser JNI:
    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.

  4. #4
    Membre éclairé

    Inscrit en
    Août 2007
    Messages
    308
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 308
    Billets dans le blog
    1
    Par défaut Merci!!
    merci pour vos réponses. Je vais tester et je vous tiens au courant

  5. #5
    AkH
    AkH est déconnecté
    Membre confirmé
    Homme Profil pro
    Perso
    Inscrit en
    Juillet 2005
    Messages
    58
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Perso

    Informations forums :
    Inscription : Juillet 2005
    Messages : 58
    Par défaut
    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++)

  6. #6
    Membre éclairé

    Inscrit en
    Août 2007
    Messages
    308
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 308
    Billets dans le blog
    1
    Par défaut pas résolu
    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

  7. #7
    Membre éclairé

    Inscrit en
    Août 2007
    Messages
    308
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 308
    Billets dans le blog
    1
    Par défaut
    AkH...je ne veux pas écrire du code C++ dans du code java. je veux juster invoquer un prog C++ à s'executer

  8. #8
    AkH
    AkH est déconnecté
    Membre confirmé
    Homme Profil pro
    Perso
    Inscrit en
    Juillet 2005
    Messages
    58
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Perso

    Informations forums :
    Inscription : Juillet 2005
    Messages : 58
    Par défaut
    il y a pas un truc bizard ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    /home/nina/Test/ ./monProgramme
    j'aurais soit mis
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    ./monProgramme.exe
    soit

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    /home/nina/Test/monProgramme.exe
    après j'en suis pas sur

  9. #9
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    Citation Envoyé par nina2007 Voir le message
    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
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    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
    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, çà:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    } catch (IOException e1) {
     
    			}
    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
    remplace par ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    } catch (IOException e1) {
    			e1.printStackTrace();        
    			}
    Et donne nous l'erreur.

    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)

  10. #10
    Membre éclairé

    Inscrit en
    Août 2007
    Messages
    308
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 308
    Billets dans le blog
    1
    Par défaut
    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

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Appel d'un programme JAVA depuis une procedure PL/SQL
    Par farenheiit dans le forum PL/SQL
    Réponses: 8
    Dernier message: 04/03/2008, 11h03
  2. Réponses: 3
    Dernier message: 07/11/2005, 17h33
  3. Réponses: 2
    Dernier message: 08/09/2005, 12h18
  4. DLL Visual C++ appelée dans un programme Visual Basic
    Par marseillais57 dans le forum MFC
    Réponses: 7
    Dernier message: 21/07/2005, 14h57
  5. [JDBC] Programmation autre que Java
    Par Vow dans le forum JDBC
    Réponses: 2
    Dernier message: 23/06/2004, 11h22

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo