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

Langage C++ Discussion :

Lancer un programme Java depuis du code C++


Sujet :

Langage C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2010
    Messages
    139
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 139
    Par défaut Lancer un programme Java depuis du code C++
    Bonjour,

    Comme expliqué dans le titre, je souhaite que le code que j'exècute en C++ lance un autre programme Java en parallèle. Ce programme Java doit être lancé sans argument, mais peut se trouver aussi bien sur la même machine, que sur un ordinateur du même réseau local.

    Alors j'ai regardé du côté de JNI, mais cette solution ne me semble pas correspondre à une utilisation en réseau (avec deux machines connectées au même réseau local).

    L'objectif final de ce lancement est de faire communiquer les deux programmes par l'intermédiaire de Socket TCP (communication déjà en place, si les deux programmes sont lancés tour à tour).

    Si quelqu'un sait comment faire, je suis preneur.

  2. #2
    Rédacteur
    Avatar de 3DArchi
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    7 634
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 7 634
    Par défaut
    Salut,
    Heu, comme pour lancer un autre programme : exécution de "java monprogramme.class" ?

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2010
    Messages
    139
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 139
    Par défaut
    Oui, c'est ce que je taperais en ligne de commande pour exécuter mon code java. mais je veux que ce soir une instruction de mon code C++ qui lance mon Java.

    Peut être que je ne vois pas ce que veux dire "comme un autre programme"... Avec execl() par exemple, le programme lancé par le code C stop le programme C au profit de l'exécutable lancé dans la fonction. Il n'y a pas d'exécution en parallèle.

    En conclusion, ce que je veux c'est :
    - Lancer mon exécutable C++.
    - Au cours de son exécution, le programme C++ lance le programme Java.
    - Les deux programmes tournent en parallèle et s'échangent des informations.

  4. #4
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par K-you Voir le message
    Oui, c'est ce que je taperais en ligne de commande pour exécuter mon code java. mais je veux que ce soir une instruction de mon code C++ qui lance mon Java.
    Ce que 3DArchi veut dire, c'est que tu peux reproduire le comportement de la ligne de commande (ou plutôt de "Exécuter...") avec la fonction system :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    system("java monprogramme.class");

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2010
    Messages
    139
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 139
    Par défaut
    Ok. Quand j'utilise cette méthode jai le message d'erreur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Exception in thread "main" java.lang.NoClassDefFoundError: /home/moi/workspace/Projet/bin/monPackage/MaClasse/class
    Caused by: java.lang.ClassNotFoundException: .home.moi.workspace.Projet.bin.monPackage.MaClasse.class
    	at java.net.URLClassLoader$1.run(URLClassLoader.java:200)
    	at java.security.AccessController.doPrivileged(Native Method)
    	at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
    	at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
    	at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
    	at java.lang.ClassLoader.loadClass(ClassLoader.java:252)
    	at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:320)
    Could not find the main class: /home/moi/workspace/Projet/bin/monPackage/MaClasse.class.  Program will exit.
    Pourtant c'est bien ma classe public avec la méthode main qui est appelée de la façon suivante dans mon code C++ :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    system("java /home/moi/workspace/Projet/bin/monPackage/MaClasse.class");
    J'ai aussi essayé sans le ".class" sans succès. Je suis sous Linux.
    Cette manière de lancer le projet me semble bien, mais est-ce envisageable de l'utiliser en réseau, en précisant l'IP de la machine où se trouve le programme Java ?

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2010
    Messages
    139
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 139
    Par défaut
    hum, system() ne serait pas une fonction utilisable que sous Windows ?

    Pas d'équivalent Linux ?

Discussions similaires

  1. Réponses: 2
    Dernier message: 17/03/2015, 11h06
  2. Lancer un programme Java depuis la ligne de commande
    Par Battant dans le forum Débuter avec Java
    Réponses: 2
    Dernier message: 28/07/2014, 23h52
  3. [XL-2003] lancer un script java depuis un code VBA
    Par butfy dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 19/07/2010, 18h22
  4. Lancer un programme java depuis un programme java
    Par TheBAT dans le forum Entrée/Sortie
    Réponses: 6
    Dernier message: 06/01/2007, 16h45
  5. Lancer un programme c depuis java dans une console
    Par moise44 dans le forum Général Java
    Réponses: 5
    Dernier message: 04/04/2006, 20h04

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