Lancer java à partir d'un programme C [Résolu]

Signaler
Messages postés
91
Date d'inscription
vendredi 12 mars 2004
Statut
Membre
Dernière intervention
5 août 2005
-
 elwady -
Salut,

Tout est dans le titre ! Ou presque... Je suis sous windows et je cherche à lancer un programme java (graphique) à partir d'un exécutable (C compilé). J'ai fait tout ça, mais le problème que est qu'il y a en permanence une fenêtre dos (cmd.exe) derrière le programme java.
Je fait l'appel dans mon programme C avec la fonction system(). Malheureusement j'ai appris que cette fonction lance forcement cmd.exe. J'ai essayé aussi avec exclp() mais dans ce cas j'ai une belle erreur windows !
Est-ce que quelqu'un a une idée ?
Fabrice

28 réponses

Messages postés
91
Date d'inscription
vendredi 12 mars 2004
Statut
Membre
Dernière intervention
5 août 2005

Bien sûr ! Je crois que t'as oublié le C# aussi ! Ah là tu m'as bien fait rire :-) Quand tu auras (juste essayé) de faire une application portable dans ta vie on en reparlera... Ou à defaut essaie de rencontrer des gens qui ont en fait une !
Je ne veux pas partir dans une discussion sans fin, fait toi de l'expérience et tu changeras d'avis par toi même...
A bon entendeur
Fabrice
Messages postés
649
Date d'inscription
mardi 8 juin 2004
Statut
Membre
Dernière intervention
9 septembre 2004
7
quelle erreur?
Messages postés
91
Date d'inscription
vendredi 12 mars 2004
Statut
Membre
Dernière intervention
5 août 2005

Ben plus aucune ! Hier execlp ne fonctionnait pas, aujourd'hui j'essaie de reproduire l'erreur et c'est OK ! Par contre j'ai toujours une fenêtre dos (cmd.exe) qui vient s'afficher derrière et qui part aussi tôt. Est ce que quelqu'un sait comment ne pas obtenir cette fenêtre ? La question pourrait aussi être comment lancer un programme (écrit en C) uniquement en mode windows (pas de shell - cmd.exe)
Merci
Fabrice
Messages postés
9
Date d'inscription
mardi 20 août 2002
Statut
Membre
Dernière intervention
24 août 2004
1
pour lancer un programme java sans cmd derriere il me semble que tu dois utiliser javaw
Messages postés
91
Date d'inscription
vendredi 12 mars 2004
Statut
Membre
Dernière intervention
5 août 2005

C'est vrai que je ne l'ai pas dit, j'utilise déjà javaw...
merci userman
Fabrice
Messages postés
545
Date d'inscription
lundi 10 mai 2004
Statut
Membre
Dernière intervention
28 septembre 2011
2
Euh, je vais me répéter par rapport à ce que j'ai déjà dit ailleurs, mais un jar executable ne serait il pas plus simple ?

Car se jar pourra fonctionner sur tout OS, alors que ton programme C devra etre recompilé pour permettre de le lancer sous un nouvel OS.

Enfin, ce que j'en dit ....
Messages postés
6535
Date d'inscription
lundi 16 décembre 2002
Statut
Modérateur
Dernière intervention
22 août 2010
7
Fais ce qu'on t'a dit sur CPPFrance, utilise ShellExecute. Quitte a faire un truc pas portable, autant le faire jusqu'au bout.
Messages postés
91
Date d'inscription
vendredi 12 mars 2004
Statut
Membre
Dernière intervention
5 août 2005

Salut à tous,

oui, j'ai aussi posé cette question sur CPPFrance car elle est à la limite des 2 langages.

Je ne connais pas tous en java mais un jar n'est pas exécutable... Dans mon cas j'ai une archive jar et mon exécutable C appelle cette archive.

vecchio56 -> quoi qu'on en dise, java n'est pas portable et il faut de toute façon développer une version du soft pour chaque platform supporté (notament pour tout ce qui est accès matériels). Je prévois de développer ce programme de lancement sous linux aussi (d'ailleurs beaucoup plus simple à faire).

Si quelqu'un un jour invente un langage portable, il gagnera beaucoup d'argent...

Fabrice
Messages postés
6535
Date d'inscription
lundi 16 décembre 2002
Statut
Modérateur
Dernière intervention
22 août 2010
7
Le C et Java sont des langages portables je te rappelle...
Messages postés
6535
Date d'inscription
lundi 16 décembre 2002
Statut
Modérateur
Dernière intervention
22 août 2010
7
Je ne savais pas que j'étais aussi drôle
Messages postés
545
Date d'inscription
lundi 10 mai 2004
Statut
Membre
Dernière intervention
28 septembre 2011
2
Un jar peut etre executable, il suffit d'y mettre un fichier particulier, appelé manifest, afin de spécifier la classe contenant le main.

Il suffit d'associer ensuite le jar à javaw(Windows) ou à java -jar(linux/unix) ou autre chose pour MAC (connais pas, dsl).

Par application protable , qu'entends tu ? car si on ne part pas de la même def, ce sera un débat de sourds.
Messages postés
6535
Date d'inscription
lundi 16 décembre 2002
Statut
Modérateur
Dernière intervention
22 août 2010
7
On ne parlait pas d'application portable, mais de langage portable. C'est pour ca que dans ma grande folie j'ai dit que ca existait déja.
Messages postés
545
Date d'inscription
lundi 10 mai 2004
Statut
Membre
Dernière intervention
28 septembre 2011
2
Euh, au départ c'était les app.
Puis vous en etes venus aux langages.

Ceci dit, ma question peut se rapporter aux deux.
Messages postés
91
Date d'inscription
vendredi 12 mars 2004
Statut
Membre
Dernière intervention
5 août 2005

oui merci, je connais le manifest mais souvent, pour ne pas dire toujours, une application n'est pas un unique .jar et est associée à divers autres libraries et exécutables...

Si on parle de langages portables, presque tous les langages (les plus utilisés) sont portables donc aucun intérêt de débattre sur ce sujet...

quand on me dit, je site :
Fais ce qu'on t'a dit sur CPPFrance, utilise ShellExecute. Quitte a faire un truc pas portable, autant le faire jusqu'au bout.

On parle bien d'application et non de langage, puisque je le rappelle il n'y a aucun interêt à parler de langage portable, je peux très bien programmer en VB sous linux ! ça n'a aucun Intérêt mais je peux le faire... Sachant que ce que je vais produire ne sera pas utilisable sous linux ! (c'est un exemple poussé à l'extrême, pour que vous compreniez bien)

Je vous indique au passage que j'ai quand même réussi à faire mon launcher portable en utilisant les directives de pré-compilation. Un seul regret : l'appel system fork() n'existe pas sous windows (super portabilité ! Et ce n'est pas la seule fonction)

Avec tout ça j'ai failli oublié de répondre à ta question. Pour moi une application portable est une application qui avec le même code source se compile sous toutes les platformes (Windows, linux, mac, ...). L'intêret est de maintenir un seul code au lieu d'un par plateforme...

Fabrice
Messages postés
6535
Date d'inscription
lundi 16 décembre 2002
Statut
Modérateur
Dernière intervention
22 août 2010
7
fabrice_pi, je dois avouer que tu es assez marrant aussi dans ton genre:
"quoi qu'on en dise, java n'est pas portable"
Ce n'est pas parce qu'il faut développez une machine virtuelle pour chaque plate forme qu'il faut considérer que Java n'est pas portable. Bien sur que Java est portable.
J'entend par portable, 'qui peut êtr porté sur une autre plate forme sans modifier le code source'. Java va plus loin puisque c'est l''éxécutable' qui est portable.
De toute facon une éxécutable natif ne sera jamais portable, puisque les APIs sont différents en fonction des systemes.
Messages postés
649
Date d'inscription
mardi 8 juin 2004
Statut
Membre
Dernière intervention
9 septembre 2004
7
" Quand tu auras (juste essayé) de faire une application portable dans ta vie on en reparlera... Ou à defaut essaie de rencontrer des gens qui ont en fait une !"

la question est : est-ce qu'une applet est une appli. :big)
Messages postés
91
Date d'inscription
vendredi 12 mars 2004
Statut
Membre
Dernière intervention
5 août 2005

Tu commences franchement à m'enerver : Je maintiens que le code java n'est pas portable, c'est à dire qu'il faut coder différement (le java) selon qu'on est sous windows, sous linux ou sous mac. vecchio56, grandit, ouvre toi l'esprit, code une application et tu verras les problèmes que ça pose !
On me paie très cher pour résoudre c'est problèmes de portabilité (c'est donc qu'ils existent ou que les gars qui me paient sont des crétins, puisque tout est portable et qu'il n'y a rien à faire !)

De toute facon une éxécutable natif ne sera jamais portable, puisque les APIs sont différents en fonction des systemes.
-> Donc le code souce aussi :big)

wargre, non, une applet n'est pas une appli. Je pourrais dire que java est génial pour ça : les applets. Je n'ai pas encore trouvé de contre indication sur la portabilité des applets, ni même de compatibilté entre les browsers.

Fabrice
Messages postés
6535
Date d'inscription
lundi 16 décembre 2002
Statut
Modérateur
Dernière intervention
22 août 2010
7
Je veux bien t'écouter et pardonne ma naïveté, mais dans ce cas la ca veut dire que Java ne tient pas ses promesses. A mon avis tu dois parler d'un domaine que je ne connais pas, parce que moi j'ai déj fait des trucs en Java et ca marche pareil sous Windows ou sous Linux.
Messages postés
545
Date d'inscription
lundi 10 mai 2004
Statut
Membre
Dernière intervention
28 septembre 2011
2
Un exemple parfait de ce que dit fabrice_pi, c'est l'emploi de différents LookAndFeel, selon l'OS de la machine : il faut, selon l'OS et le LookAndFeel, adapter la taille de la fenetre.

Ce n'est qu'un maigre exemple, bien sur ...

gmi19oj19
Messages postés
91
Date d'inscription
vendredi 12 mars 2004
Statut
Membre
Dernière intervention
5 août 2005

Merci gmi19oj19, l'exemple est parfait et je n'y avais pas pensé bien que j'ai rencontré ce problème.
Fabrice