IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Java Discussion :

[CLASSPATH] problème à l'exécution d'un jar, dépendant d'autre jar


Sujet :

Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Mars 2012
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Mars 2012
    Messages : 6
    Par défaut [CLASSPATH] problème à l'exécution d'un jar, dépendant d'autre jar
    Bonjour,


    j'ai un petit soucis à l'exécution d'un jar, qui dépend d'un autre jar. Lorsque j'exécute le jar en cliquant dessus, le jar se lance, puis après quelques cliques, j'obtiens un beau message d'erreur :

    Cause by: java.lang.ClassNotFoundException


    Du coup j'ai fais quelques tests et en lancant mon outil de la façon suivante :

    java -classpath "maDependance.jar" maclasse

    Ca fonctionne très bien.


    Par contre, lorsque je lance la commande suivante :

    java -classpath "maDependance.jar" -jar monJar.jar

    Cela me sort l'erreur obtenu plus haut ... Je ne comprends plus très bien. Pourtant j'inclus bien dans le classpath de mon jar, mon autre jar, mais pas moyen, il n'arrive pas à le voir ...


    Pouvez vous m'éclaircir svp ?

    Merci d'avance,
    Emmanuel.

  2. #2
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Février 2012
    Messages
    133
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2012
    Messages : 133
    Par défaut
    Salut,

    Montre nous un peu ton Manifest stp.

    sinon java -classpath "maDependance.jar" -jar monJar.jar, je pense que c'est normal que cette commande ne marche pas car tout ce qui faut pour exécuter ton monJar est déjà tout enregistré dedans...donc il ne sait pas rajouter le paramètre que tu lui donnes à mon avis...Mais je m'exprime mal, je pense ^^.

  3. #3
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Mars 2012
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Mars 2012
    Messages : 6
    Par défaut
    Salut,

    si si, je comprends bien ce que tu veux dire. Mais j'ai cru comprendre en regardant un peu par ci par la sur le net, qu'avec l'option -classpath, on pouvait modifier le classpath (définie dans le MANIFEST) d'un jar. Mais j'ai peut etre rien compris ...

    Voici mon MANIFEST :

    Manifest-Version: 1.0
    Ant-Version: Apache Ant 1.7.1
    Created-By: 14.0-b16 (Sun Microsystems Inc.)
    Main-Class: maClass
    Built-By: XXXX on ${TODAY}
    Implementation-Version: 6.7.3.A.1
    Class-Path: . ../maDependance.jar


    Pour le class-path, j'ai également testé :

    Class-Path: . ./maDependance.jar

    Class-Path: . maDependance.jar

    Le jar que j'exécute ce situe dans le même répertoire que sa dépendance.

  4. #4
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Février 2012
    Messages
    133
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2012
    Messages : 133
    Par défaut
    Oui oui, il faut les jar pour que cela fonctionne... Mais avant, je pense que tu compile ton jar exécutable :/.

    Class-Path: platform.jar jna.jar ProtocolInterface.jar

    voilà un exemple que j'ai du faire pour utiliser la bibliothèque JNA dans mon éxécutable. Tu ne dois pas mettre de point et je n'ai pas du préciser l'emplacement...

    Essaye tjr.. :/

  5. #5
    Membre actif
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Novembre 2011
    Messages
    50
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2011
    Messages : 50
    Par défaut
    Citation Envoyé par Emmanuel_ Voir le message
    Bonjour,



    java -classpath "maDependance.jar" -jar monJar.jar

    Cela me sort l'erreur obtenu plus haut ... Je ne comprends plus très bien. Pourtant j'inclus bien dans le classpath de mon jar, mon autre jar, mais pas moyen, il n'arrive pas à le voir ...
    Essayer
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    java -classpath "maDependance.jar;monJar.jar" -jar monJar.jar

    En fait $CLASSPATH peut être défini dans l'environnement ou avec -classpath
    Ce dernier complète le CLASSPATH par défaut qui indique où est le rt.jar (pour runtime.jar)
    Tous les *.jar concernés doivent figurer dans l'un et/ou dans l'autre.

  6. #6
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 582
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 582
    Par défaut
    Moi je dis que monJar.jar n'est pas exécutable.

    Dans le premier post, java -classpath "maDependance.jar" maclasse ignore complètement l'existence de monJar.jar, et "ça marche" ?
    Dans ce cas monJar.jar est inutile...
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  7. #7
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Mars 2012
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Mars 2012
    Messages : 6
    Par défaut
    Citation Envoyé par thelvin Voir le message
    Moi je dis que monJar.jar n'est pas exécutable.

    Dans le premier post, java -classpath "maDependance.jar" maclasse ignore complètement l'existence de monJar.jar, et "ça marche" ?
    Dans ce cas monJar.jar est inutile...

    Si si, je te confirme que monJar.jar est exécutable, car l'outil se lance bien.

  8. #8
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 582
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 582
    Par défaut
    Citation Envoyé par Emmanuel_ Voir le message
    Si si, je te confirme que monJar.jar est exécutable, car l'outil se lance bien.
    Quel outil lance bien quoi ? Quel rapport ça a avec monJar.jar qui serait ou non un .jar exécutable ?

    Par ailleurs, j'ai dit aussi, et c'est bien plus important, qu'un de tes tests prouve que monJar.jar n'est pas nécessaire, donc inutile. S'il ne sert à rien et qu'on s'en sort mieux sans lui, il va y avoir un paquet de trucs à repenser...
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  9. #9
    Membre actif
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Novembre 2011
    Messages
    50
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2011
    Messages : 50
    Par défaut
    Citation Envoyé par thelvin Voir le message
    Dans le premier post, java -classpath "maDependance.jar" maclasse ignore complètement l'existence de monJar.jar, et "ça marche" ?
    Dans ce cas monJar.jar est inutile...
    ... car vous êtes dans le même répertoire que maclasse lorsque vous lancez la ligne de commande.
    Essayez d'un autre répertoire, vous devrez alors signaler le chemin absolu (ou relatif) de vos *.jar, mais avec [... path/]maclasse cela ne devrait plus fonctionner.

    Sinon j'ai induit/supposé que maclasse était la seule classe ayant un main() de mon monJar.jar

  10. #10
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Mars 2012
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Mars 2012
    Messages : 6
    Par défaut
    Citation Envoyé par cylere Voir le message
    Essayer
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    java -classpath "maDependance.jar;monJar.jar" -jar monJar.jar

    En fait $CLASSPATH peut être défini dans l'environnement ou avec -classpath
    Ce dernier complète le CLASSPATH par défaut qui indique où est le rt.jar (pour runtime.jar)
    Tous les *.jar concernés doivent figurer dans l'un et/ou dans l'autre.

    J'ai essayé, mais cela ne fonctionne pas non plus. Par contre, j'ai modifié le class-path dans mon MANIFEST et maintenant ca marche, mais je ne comprends pas la logique ...

    Class-Path: . maDependance.jar monJar.jar

    Pourtant, si ce que tu dis es vrai cylere, ta commande aurait dû fonctionner ! Si quelqu'un a un élément de réponse, je pense qu'il sera la bienvenu ... lol


    Merci pour votre aide en tout cas !

Discussions similaires

  1. Réponses: 0
    Dernier message: 12/09/2009, 16h27
  2. Création .jar appelant d'autres.jar
    Par Ubuntu66 dans le forum Débuter avec Java
    Réponses: 1
    Dernier message: 19/06/2008, 18h18
  3. Jar exécutable d'un projet contenant d'autres jars
    Par a tunar with no tune dans le forum Langage
    Réponses: 4
    Dernier message: 14/12/2007, 12h12
  4. Créer jar exécutable d'un projet contenant d'autres jar
    Par a tunar with no tune dans le forum Eclipse Java
    Réponses: 1
    Dernier message: 14/12/2007, 00h13
  5. [JAR] inclusion d'autres jar...
    Par sozie9372 dans le forum Général Java
    Réponses: 1
    Dernier message: 03/04/2006, 15h57

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo