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

Langage Java Discussion :

Fichiers jar non trouvés


Sujet :

Langage Java

  1. #1
    Membre chevronné Avatar de Mister Nono
    Homme Profil pro
    Ingénieur Mathématiques et Informatique
    Inscrit en
    Septembre 2002
    Messages
    2 232
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur Mathématiques et Informatique
    Secteur : Santé

    Informations forums :
    Inscription : Septembre 2002
    Messages : 2 232
    Points : 1 897
    Points
    1 897
    Par défaut Fichiers jar non trouvés
    Bonjour,

    J'ai une classe qui utilise de nombreuses librairies (fichiers jar) stockées dans un sous-répertoire nommé lib.

    Lors de l'execution de la commande suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    java -classpath .;lib MaClass
    ... j'ai une exception qui m'indique qu'une librairie n'a pas étée trouvée.

    Comment faire pour que toutes les librairies du répertoire lib soient accessibles ?

    Merci.

  2. #2
    Membre chevronné Avatar de Mister Nono
    Homme Profil pro
    Ingénieur Mathématiques et Informatique
    Inscrit en
    Septembre 2002
    Messages
    2 232
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur Mathématiques et Informatique
    Secteur : Santé

    Informations forums :
    Inscription : Septembre 2002
    Messages : 2 232
    Points : 1 897
    Points
    1 897
    Par défaut
    Même en mettant les fichiers jar dans le même répertoire que la classe, les librairies ne sont pas trouvées.

    Pourtant dans eclipse le code fonctionne donc ce n'est pas un problème de codage.

    A+

  3. #3
    Membre actif
    Avatar de vahid
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    228
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 228
    Points : 276
    Points
    276
    Par défaut
    Slt
    pourrais tu nous donner un rapide visu de ton arborescence ?
    ie : d ou tu lances ta commande d execution, ou se trouve ton main, ou se trouve tes libs ?

  4. #4
    Membre chevronné Avatar de Mister Nono
    Homme Profil pro
    Ingénieur Mathématiques et Informatique
    Inscrit en
    Septembre 2002
    Messages
    2 232
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur Mathématiques et Informatique
    Secteur : Santé

    Informations forums :
    Inscription : Septembre 2002
    Messages : 2 232
    Points : 1 897
    Points
    1 897
    Par défaut
    Arborescence :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    MaClass.class
    <DIR> lib  // répertoire contenant les fichiers jar
    lib/fichier1.jar ... lib/fichier20.jar // librairies nombreuses
    Je me place dans le même répertoire que MaClass et je lance la commande :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    java -classpath .;lib MaClass
    A+

  5. #5
    Membre actif
    Avatar de vahid
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    228
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 228
    Points : 276
    Points
    276
    Par défaut
    As tu essayer en mettant le chemin absolu ?
    -> java -classpath "C:/....../lib/"
    ou
    -> java -classpath "./lib/"

  6. #6
    Membre chevronné Avatar de Mister Nono
    Homme Profil pro
    Ingénieur Mathématiques et Informatique
    Inscrit en
    Septembre 2002
    Messages
    2 232
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur Mathématiques et Informatique
    Secteur : Santé

    Informations forums :
    Inscription : Septembre 2002
    Messages : 2 232
    Points : 1 897
    Points
    1 897
    Par défaut
    Citation Envoyé par vahid
    As tu essayer en mettant le chemin absolu ?
    -> java -classpath "C:/....../lib/"
    Impossible, car chez le client je ne connaîtrai pas cette information.

    Citation Envoyé par vahid
    ou
    -> java -classpath "./lib/"
    Oui, et toujours le même soucis.

    A+

  7. #7
    Membre actif
    Avatar de vahid
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    228
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 228
    Points : 276
    Points
    276
    Par défaut
    Heu je ne suis pas sur que ce soit faisable de spécifier un dossier avec des jar dedans.
    http://java.sun.com/j2se/1.3/docs/to...classpath.html

    Il est décrit que l'on peu target un dossier avec des .class dedans ou un zip/jar, pas de dossiers remplit de jar.

    A premiere vue le solution est d'écrire tous tes jar à la suite a la main (dans un .bat par exple).

    Je pensais pourtant avoir deja fait réussi a importer un dossier de jar, bizarre j'ai peut etre confondu

  8. #8
    Membre chevronné Avatar de Mister Nono
    Homme Profil pro
    Ingénieur Mathématiques et Informatique
    Inscrit en
    Septembre 2002
    Messages
    2 232
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur Mathématiques et Informatique
    Secteur : Santé

    Informations forums :
    Inscription : Septembre 2002
    Messages : 2 232
    Points : 1 897
    Points
    1 897
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    java -classpath .;./lib/* MaClass
    Salut,

  9. #9
    Membre actif
    Avatar de vahid
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    228
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 228
    Points : 276
    Points
    276
    Par défaut
    ca petait une exception sur un de mes projets mdr
    a+

  10. #10
    Membre confirmé
    Inscrit en
    Mai 2007
    Messages
    335
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 335
    Points : 524
    Points
    524
    Par défaut classpath
    oops, résolu entre-temps, et je m'ai gourré.

    Reste que la remarque sur le package et de faire un jar executable pourra reservir

    Je suis pas sur qu'on puisse sélectionner tout un répertoire, moi je spécifie tous les jar que j'utilise dans le classpath.

    tu peux éventuelement ajouter les jars dans les classpath de boot ou d'extension, mais ça n'est pas conseillé du tout:
    http://remus.rutgers.edu/~mcgrew/Jav...ngclasses.html

    il faudra donc lister tous tes jar dans le classpath. petite remarque: tu devrais tout de suite mettre ta classe dans un package, ça simplifiera la création éventuelle d'un jar pour plus tard.

    Eventuellement et pour simplifier la ligne de commande, je génère un jar exécutable: celui-ci contient un Manifest qui spécifie la "Main-Class" et le "Class-Path". la ligne de commande est alors simplement "java -jar monjar.jar"

  11. #11
    Membre chevronné Avatar de Mister Nono
    Homme Profil pro
    Ingénieur Mathématiques et Informatique
    Inscrit en
    Septembre 2002
    Messages
    2 232
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur Mathématiques et Informatique
    Secteur : Santé

    Informations forums :
    Inscription : Septembre 2002
    Messages : 2 232
    Points : 1 897
    Points
    1 897
    Par défaut
    Citation Envoyé par deltree
    Eventuellement et pour simplifier la ligne de commande, je génère un jar exécutable: celui-ci contient un Manifest qui spécifie la "Main-Class" et le "Class-Path". la ligne de commande est alors simplement "java -jar monjar.jar"
    C'est ce que je désire faire maintenant.

    Mais avec la ligne du manifest :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    ClassPath: . ./lib/*
    ... l'exécution du Jar m'indique de nouveau que les bibliothèques ne sont pas trouvées (pour rappel elles se trouvent toutes dans le sous-répertoire lib).

    Comment faire maintenant ?

    Merci.

  12. #12
    Expert éminent sénior
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Salut,

    Citation Envoyé par Mister Nono
    Comment faire maintenant ?
    Dans le Manifest c'est Class-Path qu'il faut utiliser, et on ne peut pas utiliser * : il faut nommer tous les fichiers un à un séparé par un espace...

    a++

  13. #13
    Membre chevronné Avatar de Mister Nono
    Homme Profil pro
    Ingénieur Mathématiques et Informatique
    Inscrit en
    Septembre 2002
    Messages
    2 232
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur Mathématiques et Informatique
    Secteur : Santé

    Informations forums :
    Inscription : Septembre 2002
    Messages : 2 232
    Points : 1 897
    Points
    1 897
    Par défaut
    Citation Envoyé par adiGuba
    Salut,


    Dans le Manifest c'est Class-Path qu'il faut utiliser, et on ne peut pas utiliser * : il faut nommer tous les fichiers un à un séparé par un espace...

    a++
    Oui bien sûr c'est Class-Path.

    Mais il y doit bien avoir une solution pour ne pas à avoir à nommer tous les fichiers jar ?

    Il est bien possible d'indiquer le répertoire qui contient toutes les librairies avec la commande Java (voir ci-dessus).

    En plus, quand un fichier jar change il faut penser à recréer le Manifest et à refaire le jar exécutable : cela semble assez fastidieux et source de bugs !!!

    A+

  14. #14
    Membre expert
    Avatar de ®om
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    2 815
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 815
    Points : 3 080
    Points
    3 080
    Par défaut
    Pour que le ant remplisse l'attribut Class-Path tout seul:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    	<property name="lib.dir" value="lib" />
    	<manifestclasspath property="lib.list" jarfile="${project.name}.jar">
    		<classpath>
    			<libfileset dir="${lib.dir}" includes="**/*.jar" />
    		</classpath>
    	</manifestclasspath>
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    	<target name="jar" description="JAR the project" depends="compile">
    		<mkdir dir="${dist.dir}" />
    		<jar destfile="${dist.dir}/${project.name}.jar" basedir="${build.dir}" compress="true">
    			<manifest>
    				<attribute name="Built-By" value="${user.name}" />
    				<attribute name="Main-Class" value="${main.class}" />
    				<attribute name="Class-Path" value=". ${lib.list}" />
    			</manifest>
    		</jar>
    	</target>

  15. #15
    Membre chevronné Avatar de Mister Nono
    Homme Profil pro
    Ingénieur Mathématiques et Informatique
    Inscrit en
    Septembre 2002
    Messages
    2 232
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur Mathématiques et Informatique
    Secteur : Santé

    Informations forums :
    Inscription : Septembre 2002
    Messages : 2 232
    Points : 1 897
    Points
    1 897
    Par défaut
    Citation Envoyé par ®om
    Pour que le ant remplisse l'attribut Class-Path tout seul:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
        <property name="lib.dir" value="lib" />
        <manifestclasspath property="lib.list" jarfile="${project.name}.jar">
            <classpath>
                <libfileset dir="${lib.dir}" includes="**/*.jar" />
            </classpath>
        </manifestclasspath>
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
        <target name="jar" description="JAR the project" depends="compile">
            <mkdir dir="${dist.dir}" />
            <jar destfile="${dist.dir}/${project.name}.jar" basedir="${build.dir}" compress="true">
                <manifest>
                    <attribute name="Built-By" value="${user.name}" />
                    <attribute name="Main-Class" value="${main.class}" />
                    <attribute name="Class-Path" value=". ${lib.list}" />
                </manifest>
            </jar>
        </target>
    Alors là c'est super sympa même si je pensais pouvoir faire cela sans ant.

    Je vais essayer.

Discussions similaires

  1. Fichier ".jar" pas trouvé -- dans une "User library"
    Par chat_roux dans le forum Eclipse Java
    Réponses: 4
    Dernier message: 11/10/2008, 22h16
  2. .jar non trouvé par Eclipse alors que
    Par fripette dans le forum Eclipse Platform
    Réponses: 1
    Dernier message: 19/03/2008, 10h25
  3. .jar non trouvé par Eclipse alors que
    Par fripette dans le forum Servlets/JSP
    Réponses: 2
    Dernier message: 17/03/2008, 16h16
  4. .jars non trouvés avec Tomcat
    Par Invité dans le forum Eclipse Java
    Réponses: 3
    Dernier message: 03/05/2007, 09h26
  5. fichier properties non trouvé
    Par kifouillou dans le forum Langage
    Réponses: 42
    Dernier message: 15/02/2007, 13h47

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