[JAVA] Lancer un JAR exécutable depuis un cd

ornehus

Membre enregistré
1 Octobre 2009
3
0
Bonjour,

Voilà mon problème, j'ai réalisé un programme en java pour avoir une portabilité sous Mac OS et Windows, ce programme doit se lancer depuis un cd.

Mon programme se lance très bien depuis le cd quand je suis sous Windows en revanche lorsque je suis sous Mac OS, le programme ne fonctionne pas et une fenêtre s'ouvre:
jarlauncherquit.png

Alors réflex normal, je lance mon programme depuis le Terminal avec
Bloc de code:
 java -jar monjar.jar
après m'être placé dans le dossier du cd avec
Bloc de code:
 cd /Volumes/CDROM
Et mon programme se lance.

Le souci c'est que je ne veux surtout pas que l'utilisateur ait à taper une commande dans le Terminal, je veux qu'il lance le programme par un double-clic.

Je ne sais pas s'il est possible de faire un script bash qui s'exécute par un double-clic mais c'est à peu près ce qu'il me faudrait.

J'ai aussi un deuxième souci, qui sera peut-être réglé si le premier est réglé.

Normalement mon programme donne le choix à l'utilisateur entre plusieurs logiciels et lance celui choisi pas l'utilisateur or lorsque je lance mon programme par le Terminal, il n'exécute pas le logiciel et il se ferme normalement.
C'est assez embêtant car cette fonctionnalité fonctionne parfaitement sous Windows...

Merci d'avance pour votre aide.

PS: J'ai cru comprendre que cette option avait été supprimée de Mac OS X (pour raison de sécurité je crois...) mais si vous aviez une solution miracle pour faire un autostart de mon programme à l'insertion du cd, je vous en serai éternellement reconnaissant.

Merci

Edit: Si je clique sur "Relaunch", rien ne se passe.
 
Je te conseille Platypus pour faire un lanceur.

L'application qui se lance pas, ça dépend de ce que tu lances, et comment tu le lances. Ça manque un peu d'informations là.

Pour ma part j'oublierais l'autorun, c'est la porte ouverte à toutes les fenêtres :D . Par contre tu dois pouvoir faire en sorte que le contenu du CD soit visible dès son insertion.
 
En fait ma question devrait plutôt être :

Quelles sont les différentes raisons possibles pour lesquelles une application quelconque ne pourrait pas être exécutée à partir d'un cd ?

Qu'est-ce qui empêcherait mes applications de se lancer depuis le cd ?


Mon programme lance une application Windows à l'aide d'un
Bloc de code:
try
{
     Runtime.getuntime().exec("unScriptBatchQuiLanceMonAppli.bat");
}
catch(IOException e)
{
     System.out.println(e.getMessage());
}
Ca, ça marche bien sous Windows même depuis le cd.

Et sous Mac OS je fais :

Bloc de code:
try
{
     Runtime.getuntime().exec("open monAppli.app");
}
catch(IOException e)
{
     System.out.println(e.getMessage());
}
et ça, ça ne fonctionne que si j'exécute mon programme depuis le disque dur.

Pour l'autostart, je m'attendais à ce genre de réponse donc c'est pas grave.
Et le contenu du cd s'affiche à l'insertion donc tout baigne de ce côté là.

Mais qu'est-ce que tu entends par "c'est la porte ouverte à toutes les fenêtres" ?
 
En fait ma question devrait plutôt être :

Quelles sont les différentes raisons possibles pour lesquelles une application quelconque ne pourrait pas être exécutée à partir d'un cd ?

Qu'est-ce qui empêcherait mes applications de se lancer depuis le cd ?


Mon programme lance une application Windows à l'aide d'un
Bloc de code:
try
{
     Runtime.getuntime().exec("unScriptBatchQuiLanceMonAppli.bat");
}
catch(IOException e)
{
     System.out.println(e.getMessage());
}
Ca, ça marche bien sous Windows même depuis le cd.

Et sous Mac OS je fais :

Bloc de code:
try
{
     Runtime.getuntime().exec("open monAppli.app");
}
catch(IOException e)
{
     System.out.println(e.getMessage());
}
et ça, ça ne fonctionne que si j'exécute mon programme depuis le disque dur.

Pour l'autostart, je m'attendais à ce genre de réponse donc c'est pas grave.
Et le contenu du cd s'affiche à l'insertion donc tout baigne de ce côté là.

Mais qu'est-ce que tu entends par "c'est la porte ouverte à toutes les fenêtres" ?

Il manque un R à "getuntime" je suppose :D
Le catch ne te garantis pas la détection d'une erreur dans l'exécution du open. Si tu pouvais récupérer le code et/ou la sortie d'erreur se serait probablement plus clair.
Il faut que l'application ait les droits d'éxecution. Et que la commande open pointe au bon endroit.

Pour l'histoire de portes ouvertes, l'autorun est un moyen pratique pour la propagation de virus informatiques.
 
Oui, il manque un "R":siffle:, j'ai pas fais de copier/coller, je code pas sur le même PC que celui que j'utilise pour allez sur le forum...

Comment est-ce que je peux choper les informations de la sortie d'erreur standard de "open" ?

Pour l'autostart, c'est vraiment dommage, parce que dans mon cd, il ne peut pas y avoir de virus, c'est moi qui le crée le cd.

Mais bon, si les développeurs Apple ont estimé qu'il était (trop) dangereux d'utiliser l'autostart, ben je ferai sans...
 
Comment est-ce que je peux choper les informations de la sortie d'erreur standard de "open" ?
http://ydisanto.developpez.com/tutoriels/j2se/runtime/

Pour l'autostart, c'est vraiment dommage, parce que dans mon cd, il ne peut pas y avoir de virus, c'est moi qui le crée le cd.

Mais bon, si les développeurs Apple ont estimé qu'il était (trop) dangereux d'utiliser l'autostart, ben je ferai sans...
ce qui est vrai pour ton cd ne l'est pas forcement pour les autres cds, clés usb, images disque...