Question

J'ai un programme Java qui est principalement une interface graphique et qui affiche les données écrites dans un fichier xml à partir d'un outil de ligne de commande c ++. Maintenant, je veux ajouter un bouton au programme Java pour actualiser les données. Cela signifie que mon programme doit appeler la fonctionnalité c ++.

Le meilleur moyen de simplement appeler le programme à partir de Java via un appel système? Le programme c ++ sera compilé pour mac os et windows et devrait toujours se trouver dans le même répertoire que le programme java.

Je souhaite générer un exécutable. Le programme c peut-il être stocké dans le fichier jar et appelé à partir de mon programme?

Était-ce utile?

La solution

En supposant qu'aucune meilleure méthode de communication n'est disponible (SOAP, ICE, Sockets, etc.), j'appellerais l'exécutable à l'aide de Runtime.exec () . JNI peut être utilisé pour une interface directe, mais je ne le recommanderais pas. Non, vous ne pouvez pas mettre un exécutable dans le pot. Eh bien, vous le pouvez, mais vous ne pouvez pas l’exécuter car le shell ne sait pas comment l’exécuter.

Autres conseils

Si vous avez accès au code et souhaitez une expérience "interactive" du programme externe (par exemple, passer un appel, obtenir des résultats, faire des appels supplémentaires), examinez JNI, ce qui vous permet d'appeler du code C ou C ++ à partir de Java. application en incluant & amp; lier le jus JNI à votre application C ou C ++ avec.

Voir:

http://en.wikipedia.org/wiki/Java_Native_Interface

http://www.acm.org/crossroads/xrds4-2/ jni.html

Si vous avez vraiment besoin d'une "application de lancement pour obtenir des résultats", En quelque sorte, consultez Runtime.exec (), qui vous permet de lancer un programme externe & amp; capturer sa sortie.

Voir: http://www.javaworld.com /javaworld/jw-12-2000/jw-1229-traps.html?page=1

http://www.rgagnon.com/javadetails/java-0014.html

Vous pouvez également consulter la API JNA (Java Native Access) .

Pour répondre à votre dernière question, vous ne pouvez pas exécuter d'exécutable à partir de votre pot.

Cependant, vous pouvez le stocker dans votre fichier jar et l'extraire dans un répertoire / fichier temporaire avant de l'exécuter (vérifiez sa présence la première fois et extrayez-le si nécessaire). Cela simplifiera quelque peu votre distribution, dans la mesure où vous n’avez que le fichier jar à distribuer et vous garantit que vous exécutez un fichier exécutable qui correspond au code Java que vous avez écrit.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top