Lancer java à partir d'un programme C

Résolu
fabrice_pi Messages postés 91 Date d'inscription vendredi 12 mars 2004 Statut Membre Dernière intervention 5 août 2005 - 17 août 2004 à 13:34
 elwady - 6 juil. 2005 à 10:46
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

fabrice_pi Messages postés 91 Date d'inscription vendredi 12 mars 2004 Statut Membre Dernière intervention 5 août 2005
18 août 2004 à 17:51
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
3
wargre Messages postés 649 Date d'inscription mardi 8 juin 2004 Statut Membre Dernière intervention 9 septembre 2004 7
17 août 2004 à 14:09
quelle erreur?
0
fabrice_pi Messages postés 91 Date d'inscription vendredi 12 mars 2004 Statut Membre Dernière intervention 5 août 2005
17 août 2004 à 14:22
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
0
userman Messages postés 9 Date d'inscription mardi 20 août 2002 Statut Membre Dernière intervention 24 août 2004 1
17 août 2004 à 16:02
pour lancer un programme java sans cmd derriere il me semble que tu dois utiliser javaw
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
fabrice_pi Messages postés 91 Date d'inscription vendredi 12 mars 2004 Statut Membre Dernière intervention 5 août 2005
17 août 2004 à 16:21
C'est vrai que je ne l'ai pas dit, j'utilise déjà javaw...
merci userman
Fabrice
0
gmi19oj19 Messages postés 545 Date d'inscription lundi 10 mai 2004 Statut Membre Dernière intervention 28 septembre 2011 2
17 août 2004 à 20:20
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 ....
0
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
17 août 2004 à 21:41
Fais ce qu'on t'a dit sur CPPFrance, utilise ShellExecute. Quitte a faire un truc pas portable, autant le faire jusqu'au bout.
0
fabrice_pi Messages postés 91 Date d'inscription vendredi 12 mars 2004 Statut Membre Dernière intervention 5 août 2005
18 août 2004 à 08:44
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
0
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
18 août 2004 à 15:34
Le C et Java sont des langages portables je te rappelle...
0
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
18 août 2004 à 17:54
Je ne savais pas que j'étais aussi drôle
0
gmi19oj19 Messages postés 545 Date d'inscription lundi 10 mai 2004 Statut Membre Dernière intervention 28 septembre 2011 2
18 août 2004 à 19:17
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.
0
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
18 août 2004 à 19:39
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.
0
gmi19oj19 Messages postés 545 Date d'inscription lundi 10 mai 2004 Statut Membre Dernière intervention 28 septembre 2011 2
18 août 2004 à 20:35
Euh, au départ c'était les app.
Puis vous en etes venus aux langages.

Ceci dit, ma question peut se rapporter aux deux.
0
fabrice_pi Messages postés 91 Date d'inscription vendredi 12 mars 2004 Statut Membre Dernière intervention 5 août 2005
18 août 2004 à 20:40
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
0
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
18 août 2004 à 20:42
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.
0
wargre Messages postés 649 Date d'inscription mardi 8 juin 2004 Statut Membre Dernière intervention 9 septembre 2004 7
19 août 2004 à 10:22
" 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)
0
fabrice_pi Messages postés 91 Date d'inscription vendredi 12 mars 2004 Statut Membre Dernière intervention 5 août 2005
19 août 2004 à 19:42
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
0
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
19 août 2004 à 19:56
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.
0
gmi19oj19 Messages postés 545 Date d'inscription lundi 10 mai 2004 Statut Membre Dernière intervention 28 septembre 2011 2
20 août 2004 à 07:42
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
0
fabrice_pi Messages postés 91 Date d'inscription vendredi 12 mars 2004 Statut Membre Dernière intervention 5 août 2005
20 août 2004 à 10:14
Merci gmi19oj19, l'exemple est parfait et je n'y avais pas pensé bien que j'ai rencontré ce problème.
Fabrice
0
Rejoignez-nous