Distribuer une application java ?
greenthumb
-
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 :)
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:
- Distribuer une application java ?
- Waptrick java football - Télécharger - Jeux vidéo
- Jeux java itel - Télécharger - Jeux vidéo
- Nommez une application d'appel vidéo ou de visioconférence - Guide
- Application java - Télécharger - Langages
- Comment supprimer une application préinstallée sur android - Guide
30 réponses
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.
++
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.
++
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 ?
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 ?
Tu bosses donc dans une grande boîte non?
Vous avez pas un outil de distrib à grande échelle type Citrix?
Vous avez pas un outil de distrib à grande échelle type Citrix?
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
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.
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 ? ^^
Effectivement, on a un outil de distrib, mais j'ai pas l'habilitation pour ajouter des choses dans cet outil... c'est nul hein ? ^^
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.
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.
arf, malheureusement c'est assez urgent ^^ <== ça se fait en 15 minutes top chrono, install d'Apache comprise ^^
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 ;)
En tout cas merci beaucoup pour votre disponibilité :-)
Je vous tiendrais au courant de l'évolution ;)
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**** ^^
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**** ^^
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).
++
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).
++
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
Voici mon MANIFEST :
Manifest-Version: 1.0
Class-Main: src.lcl.acl.program.MainClass
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.
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: .++
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... ^^)
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... ^^)
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
++
Merci beaucoup :-)
Dernière petite question : la ligne Main-Class doit indiquer le fichier main.class ou main.java ? Je m'embrouille :S
Dernière petite question : la ligne Main-Class doit indiquer le fichier main.class ou main.java ? Je m'embrouille :S
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).
++
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).
++