Distribuer une application java ?

Fermé
greenthumb - 12 déc. 2008 à 15:26
 greenthumb - 18 déc. 2008 à 11:27
Bonjour,

Je vous explique mon souci :

J'ai développé une application Java. J'en ai ensuite fait un .jar. Cette application est placée sur un disque dur accessible pour plusieurs personnes. Lorsque je lance cette application depuis mon poste, tout se passe très bien, mais lorsque je lance cette application depuis un autre poste, elle ne se lance pas, l'erreur suivante apparait à l'écran : "Could not find the main class, program will exit !" Je ne comprends vraiment pas d'où vient le problème, puisque de mon poste l'application se lance très bien, le main est trouvé sans aucun souci. Cela fait maintenant 3 jours que je suis sur ce problème, je commence vraiment à désespérer...

Est-ce que quelqu'un aurait une solution à m'apporter ?
Merci :)
A voir également:

30 réponses

sandul Messages postés 3924 Date d'inscription jeudi 22 mai 2008 Statut Membre Dernière intervention 8 octobre 2010 722
12 déc. 2008 à 16:08
Bonjour,

As-tu inclus un manifest dans le jar? Est-ce que tu as une variable classpath définie sur ton PC (mais pas sur les autres)?

En règle générale, c'est une mauvaise idée de distribuer une appli à travers un partage réseau.

++
0
arth Messages postés 9374 Date d'inscription mardi 27 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2016 1 291
12 déc. 2008 à 16:09
Surtout une java.

Encore que si il n'a pas trop de monde il peut la déployer sur chaque PC.
0
Merci pour vos réponses :-)

Alors arth, je ne peux pas déployer cette application sur chaque PC, car il y a beaucoup de postes, et de plus les personnes pouvant accéder à ce disque sont dispersées un peu partout en france... ^^

Sinon, dans le dossier contenant mon .jar (et mon projet Eclipse), il y a un fichier .classpath, mais pas de MANIFEST.MF... est-ce que je dois le créer manuellement puis reconstruire le .jar ?
0
arth Messages postés 9374 Date d'inscription mardi 27 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2016 1 291
12 déc. 2008 à 16:24
Tu bosses donc dans une grande boîte non?

Vous avez pas un outil de distrib à grande échelle type Citrix?
0

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

Posez votre question
sandul Messages postés 3924 Date d'inscription jeudi 22 mai 2008 Statut Membre Dernière intervention 8 octobre 2010 722
12 déc. 2008 à 16:27
Inclure le manifest. Ou bien (mieux) utiliser java web start. Comme ça plus de souci lorsque l'appli sera modifiée, cette technique permet un effort de déploiement zéro.
0
je viens de me renseigner sur Java Web Start, c'est intéressant :-) Mais si j'ai bien compris il permet de lancer l'application depuis le Web, mais mon application se trouve sur un disque dur... désolé si j'ai un peu de mal à comprendre :-)
0
arth Messages postés 9374 Date d'inscription mardi 27 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2016 1 291 > greenthumb
12 déc. 2008 à 16:32
Rien ne t'empêche de mettre un serveur web sur ton poste et de proposer le fichier jnlp correspondant sur celui si.
0
sandul Messages postés 3924 Date d'inscription jeudi 22 mai 2008 Statut Membre Dernière intervention 8 octobre 2010 722 > greenthumb
12 déc. 2008 à 16:32
Il te faut un serveur http (IIS ou Apache ou autre) accessible depuis les autres postes. Pas besoin qu'il soit accessible depuis l'extranet. Et pas besoin non plus de lancer l'appli depuis un navigateur (mais tu peux).

++
0
Oui, je travaille dans une banque :-)

Effectivement, on a un outil de distrib, mais j'ai pas l'habilitation pour ajouter des choses dans cet outil... c'est nul hein ? ^^
0
sandul Messages postés 3924 Date d'inscription jeudi 22 mai 2008 Statut Membre Dernière intervention 8 octobre 2010 722
12 déc. 2008 à 16:28
Ui, très nul.... Envoie au big boss un message avec /revolt comme sujet =)
0
lol je ne suis qu'un petit stagiaire, faut pas que je fasse n'importe quoi ^^
0
arth Messages postés 9374 Date d'inscription mardi 27 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2016 1 291
12 déc. 2008 à 16:31
Non ,mais tu peux en effet demander si elle peut être distribuée via cet outil.

Par contre c'est pas dit que ce soit validé, et même si ca l'est ça va prendre du temps, surtout dans une banque.
0
arf, malheureusement c'est assez urgent ^^
0
sandul Messages postés 3924 Date d'inscription jeudi 22 mai 2008 Statut Membre Dernière intervention 8 octobre 2010 722
12 déc. 2008 à 16:34
arf, malheureusement c'est assez urgent ^^ <== ça se fait en 15 minutes top chrono, install d'Apache comprise ^^
0
arth Messages postés 9374 Date d'inscription mardi 27 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2016 1 291
12 déc. 2008 à 16:35
Et encore c'est à cause qu'Apache est lent à l'install ^^
0
sandul Messages postés 3924 Date d'inscription jeudi 22 mai 2008 Statut Membre Dernière intervention 8 octobre 2010 722
12 déc. 2008 à 16:35
Mdrrrrrrrrrrrrrr
0
Sinon je vais tenter de reconstruire le .jar en incluant le MANIFEST que j'aurais créé. Je ferais ça la semaine prochaine, l'heure du week-end approche à grands pas ^^
En tout cas merci beaucoup pour votre disponibilité :-)
Je vous tiendrais au courant de l'évolution ;)
0
sandul Messages postés 3924 Date d'inscription jeudi 22 mai 2008 Statut Membre Dernière intervention 8 octobre 2010 722
12 déc. 2008 à 16:36
Yup... Bon WE à toi :-)
0
arth Messages postés 9374 Date d'inscription mardi 27 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2016 1 291
12 déc. 2008 à 16:39
Pareil!
0
re :-)

Alors j'ai recréé le fichier JAR en incluant le MANIFEST, mais rien n'y fait, je suis toujours au même point... J'en ai discuté avec un collègue qui connait le sujet, et en fait apparemment c'est parce-que mon poste n'est pas compatible avec les autres... bref c'est la m**** ^^
0
sandul Messages postés 3924 Date d'inscription jeudi 22 mai 2008 Statut Membre Dernière intervention 8 octobre 2010 722
17 déc. 2008 à 13:01
Re,

Après le rajout du manifeste dans le jar: quel message d'errur sur les autres postes? Toujours "Could not find the main class, program will exit" ? Si oui, le manifest n'est pas correct (poste-le ici, en remplaçant éventuellement les noms de ton société et ton produit par xxx / yyy s'ils apparaissent).

++
0
En effet, c'est toujours l'erreur "Could not find the main class, program will exit"
Voici mon MANIFEST :

Manifest-Version: 1.0
Class-Main: src.lcl.acl.program.MainClass
0
sandul Messages postés 3924 Date d'inscription jeudi 22 mai 2008 Statut Membre Dernière intervention 8 octobre 2010 722
17 déc. 2008 à 13:41
Bon,

Il faut mettre "Main-Class", pas "Class-Main". Et éventuellement une autre ligne Class-Path avec au moins un point dedans et d'autres choses si tu fais appel à des bibliothèques tierces.
Manifest-Version: 1.0
Main-Class: src.lcl.acl.program.MainClass
Class-Path: .
++
0
hum hum... c'est ce qu'on appelle... une erreur de débutant ^^

j'utilise plusieurs bibliothèques, je crée plusieurs lignes Class-Path ou je met tout sur la même ligne, séparé par une virgule ? (oui désolé je suis pas très malin... ^^)
0
sandul Messages postés 3924 Date d'inscription jeudi 22 mai 2008 Statut Membre Dernière intervention 8 octobre 2010 722
17 déc. 2008 à 14:23
Sur une même ligne avec un blanc comme séparateur (pas une virgule). Fais un retour à la ligne à la colonne 78 sans te soucier si tu coupes ou pas le nom de tes bibliothèques et commence la nouvelle ligne par un blanc. Exemple de Class-Path:
Class-Path: . connector.jar com.ibm.mq.jar ojdbc14.jar jni.jar xercesImpl.jar
 xml-apis.jar log4j-1.2.14.jar jdom.jar jasperreports-2.0.4.jar itext-1.3.1.j
 ar commons-logging-api-1.0.2.jar commons-logging-1.1.jar commons-digester-1.
 7.jar commons-collections-3.0.jar commons-dbcp-1.2.1.jar commons-pool-1.2.ja
 r jtds-1.1.jar jsiv-2.5.0.jar activation-1.1.jar commons-beanutils-1.7.0.jar
  commons-codec-1.3.jar commons-logging-1.1.jar jaxws-api-2.0.jar jaxen-1.1-
 beta-9.jar mail-1.4.jar saaj-api-1.3.jar saaj-impl-1.3.jar spring-1.2.6.jar 
 stax-api-1.0.1.jar wsdl4j-1.6.1.jar wstx-asl-3.2.0.jar xbean-2.2.0.jar xbean
 -spring-2.8.jar xfire-aegis-1.2.6.jar xfire-annotations-1.2.6.jar xfire-core
 -1.2.6.jar xfire-java5-1.2.6.jar xfire-jaxws-1.2.6.jar xfire-spring-1.2.6.ja
 r xfire-jsr181-api-1.0-M1.jar XmlSchema-1.1.jar commons-httpclient-3.0.jar o
 rg.mortbay.jetty-5.1.3.jarxfire-jaxb2-1.2.6.jar jaxb-api-2.0.jar jaxb-impl-2
 .0.1.jar jaxb-xjc-2.0.1.jar 


++
0
Merci beaucoup :-)

Dernière petite question : la ligne Main-Class doit indiquer le fichier main.class ou main.java ? Je m'embrouille :S
0
sandul Messages postés 3924 Date d'inscription jeudi 22 mai 2008 Statut Membre Dernière intervention 8 octobre 2010 722
17 déc. 2008 à 17:29
Le main tout court (sans .java ni .class)

Fais un essai sur ton poste:
1. tu ouvres une boîte DOS
2. tu tapes
set classpath=
pour annuler la variable d'environnement classpath (si elle est définie)
3. tu exécutes ton fichier avec
java -jar nom_de_ton_jar.jar

==> cela devra s'exécuter sans problème. Si tu fais appel à d'autres bibliothèques: ou bien tu les mets dans le même dossier que ton jar contenant la classe main (le plus simple) ou bien ailleurs (mais en ce cas il faudra adapter le Class-Path dans le manifest avec des chemins relatifs).

++
0