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

avec Java Discussion :

[classpath] autre chose que des jars


Sujet :

avec Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    165
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 165
    Par défaut [classpath] autre chose que des jars
    Bonjour,

    Alors voilà , je croyais que le classpath n'était qu'un ensemble de chemin définissant les endroits où Java pouvait aller trouver les jar dont il avait besoin...
    Est il possible de définir autre chose que des jars dans un classpath java?

    J'ai en fait un jar qui lit un fichier .properties. Ceci marche bien à condition que le .properties en question se trouve dans le rep des classes compilées. Si je souhaite le mettre, par exemple dans le répertoire config du répertoire contenant mon jar, le fichier est introuvable. On m'a dit de "le mettre dans le classpath"... Sauf que j'ai jamais rien mis d'autre que des jars dans le classpath moi...
    Si dans le manifest de mon jar, j'ajoute "./config" ou même "./config/monfichier.properties" ça ne marche pas.

    A la base, si quelqu'un peut déjà m'expliquer pourquoi on peut mettre un fichier autre qu'un .jar dans le classpath,je suis preneur!

    Merci de votre aide.

  2. #2
    Membre Expert Avatar de Uther
    Homme Profil pro
    Tourneur Fraiseur
    Inscrit en
    Avril 2002
    Messages
    4 691
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Tourneur Fraiseur

    Informations forums :
    Inscription : Avril 2002
    Messages : 4 691
    Par défaut
    En fait on ne met pas des fichiers dans un classpath mais des répertoires ou des jar.

    Donc c'est le répertoire ou est ton fichier qu'il faut mettre dans ton classpath.

  3. #3
    Membre éprouvé
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    165
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 165
    Par défaut
    Ok merci.

    Si je souhaite accéder à un fichier (qui je le rappelle n'est pas un jar) qui se trouve dans le repertoire config, au même niveau que mon jar :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    ---racine
     |
     ------config
            |
             monfichier.properties
     |
     --monJar.jar
    j'ai ajouté dans le classpath du manifest : config
    mais cela ne marche pas non plus... (le repertoire config est en dehors de mon jar). Si je laisse monfichier.properties à la racine du jar (à l'intérieur du jar) il n'y a pas de problème par contre.
    Mais ce que je veux faire, c'est laisser le .properties en dehors du jar de manière à ne pas devoir reconstruire le jar à chaque fois que je modifie le .properties...

  4. #4
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    Le classpath c'est un ensemble d'archive et de dossier qui forment l'ensemble des lieux accessibles à un classloader. Dans ton cas, peux tu nous montre ton META-INF/MANIFEST.MF qu'on voit ce qui se passe? Et affiche aussi le code que tu utiliser pour accéder au fichier .properties.

  5. #5
    Membre éprouvé
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    165
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 165
    Par défaut
    Bonjour!

    C'est en ecrivant la réponse que j'ai trouvé la solution...et que j'ai eu un autre problème
    En fait mon classpath déclaré dans le manifest était je pense correct :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Class-Path: config lib/activation.jar lib/c3p0-0.9.
     1.2.jar lib/jaxb-api.jar lib/jaxb-impl.jar lib/jaxb-xjc.jar lib/jaxb1
     -impl.jar lib/jsr173_1.0_api.jar lib/ldap.jar lib/log4j-1.2.9.jar lib
     /ojdbc14.jar
    à l'exception du dossier "config" qu'il faut en fait orthographier "config/"....
    En ajoutant le slash, ça marche, je n'ai plus de soucis. ça m'a quand même lever un autre problème, car je génère en fait le classpath du manifest avec ant de cette manière:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
     
     
     
    <path id="library.Project">
    		<pathelement location="config/" /><!-- Pbm ici : il me met config au lieu de config/ dans le classpath-->
    		<fileset dir="${mybasedir}/lib">
    			<include name="*.jar" />
    		</fileset> 
    	</path>
     
    	<pathconvert property="lib.project.manifest.classpath" pathsep=" lib/">
    	     <path refid="library.Project" />
    	     <flattenmapper />
    	</pathconvert>
     
    <target name="compile" description="Compile the java classes" depends="init">
    		<javac srcdir="${srcDir}" encoding="ISO-8859-1" destdir="${classDir}" debug="${opt.javac.debug}" optimize="${opt.javac.optimize}">
    			<classpath refid="library.Project" />
    		</javac>
    	</target>
     
    	<target name="jar" depends="compile" description="Build batch.jar">
    		<jar destfile="${mybasedir}/batch.jar" >
    			<fileset dir="${classDir}">
    				<exclude name="**/lib/*.*"/>
    			</fileset>
    			<manifest>
                    <attribute name="Main-Class" value="com.moi.Process" />
                    <attribute name="Class-Path" value="${lib.project.manifest.classpath}"/>
             	</manifest>
    		</jar>
    	</target>
    Il s'agit d'un bout de code que j'ai récupérer sur un autre forum : http://www.developpez.net/forums/d26...ut-class-path/
    Et comme on le voit, il transforme le pathelement config/ en config dans le manifest...
    Toutefois mon problème initial est résolu, donc déjà merci beaucoup! Et au pire, j'écrirai mon manifest à la main

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 0
    Dernier message: 01/05/2015, 20h57
  2. VBO autre chose que des GLfloats
    Par lXT95l dans le forum OpenGL
    Réponses: 4
    Dernier message: 01/04/2007, 19h22
  3. Réponses: 11
    Dernier message: 13/05/2006, 15h17
  4. Arrive plus a installer autre chose que debian
    Par kosmic dans le forum Debian
    Réponses: 10
    Dernier message: 12/12/2005, 11h50
  5. [langage] connaissez-vous autre chose que -d
    Par Sébastien dans le forum Langage
    Réponses: 4
    Dernier message: 05/08/2002, 20h13

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