Distribuer une application java ?

greenthumb -  
 greenthumb -
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 3927 Date d'inscription   Statut Membre Dernière intervention   723
 
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   Statut Contributeur Dernière intervention   1 293
 
Surtout une java.

Encore que si il n'a pas trop de monde il peut la déployer sur chaque PC.
0
greenthumb
 
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   Statut Contributeur Dernière intervention   1 293
 
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 3927 Date d'inscription   Statut Membre Dernière intervention   723
 
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
greenthumb
 
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   Statut Contributeur Dernière intervention   1 293 > greenthumb
 
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 3927 Date d'inscription   Statut Membre Dernière intervention   723 > greenthumb
 
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
greenthumb
 
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 3927 Date d'inscription   Statut Membre Dernière intervention   723
 
Ui, très nul.... Envoie au big boss un message avec /revolt comme sujet =)
0
greenthumb
 
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   Statut Contributeur Dernière intervention   1 293
 
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
greenthumb
 
arf, malheureusement c'est assez urgent ^^
0
sandul Messages postés 3927 Date d'inscription   Statut Membre Dernière intervention   723
 
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   Statut Contributeur Dernière intervention   1 293
 
Et encore c'est à cause qu'Apache est lent à l'install ^^
0
sandul Messages postés 3927 Date d'inscription   Statut Membre Dernière intervention   723
 
Mdrrrrrrrrrrrrrr
0
greenthumb
 
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 3927 Date d'inscription   Statut Membre Dernière intervention   723
 
Yup... Bon WE à toi :-)
0
arth Messages postés 9374 Date d'inscription   Statut Contributeur Dernière intervention   1 293
 
Pareil!
0
greenthumb
 
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 3927 Date d'inscription   Statut Membre Dernière intervention   723
 
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
greenthumb
 
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 3927 Date d'inscription   Statut Membre Dernière intervention   723
 
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
greenthumb
 
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 3927 Date d'inscription   Statut Membre Dernière intervention   723
 
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
greenthumb
 
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 3927 Date d'inscription   Statut Membre Dernière intervention   723
 
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