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 :

Compilation package (pb import .jar)


Sujet :

Java

  1. #1
    Membre averti
    Inscrit en
    Avril 2006
    Messages
    37
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 37
    Par défaut Compilation package (pb import .jar)
    Bonjour à vous, amis développeurs.

    Depuis quelques jours je bloque sur un problème de compilation en java, et je m'en retourne à vous pour essayer de trouver le problème.
    Voici de quoi il s'agit:
    J'ai récupéré les sources d'une application sur laquelle je doit travailler. Elle est composer de plusieurs classes définis dans un package : package MonNom.MonAppli.Test (les classes sont donc dans le répertoire /MonNom/MonAppli/Test/)
    De plus ces classes utilisent des librairies .jar (contenant le "moteur" de l'appli)

    Voici un exemple d'entête de ces classes :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    package MonNom.MonAppli.Test;
     
    import MonNom.MonAppli.lib.core.Core;
    La classe Core est dans le répertoire /MonNom/MonAppli/lib/core/ situé dans core1.1.jar

    Mon problème est que lorsque je compile les classes de mon package il ne reconnait pas l'import :

    The import MonNom cannot be resolved
    import MonNom.MonAppli.lib.core.Core;
    Je compile sous Debian, de cette manière :
    javac -cp .:core1.1.jar /MonNom/MonAppli/Test/*.java
    D'où cela peut venir ? Est-ce un problème de chemin ? de classpath ?

    Je compte sur vous pour m'aider

    Merci, bonne journée !

  2. #2
    Modérateur
    Avatar de dinobogan
    Homme Profil pro
    ingénieur
    Inscrit en
    Juin 2007
    Messages
    4 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations professionnelles :
    Activité : ingénieur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 4 073
    Par défaut
    Essai avec :
    javac -cp .:/MonNom/MonAppli/Test/core1.1.jar /MonNom/MonAppli/Test/*.java
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java
    Que la force de la puissance soit avec le courage de ta sagesse.

  3. #3
    Membre averti
    Inscrit en
    Avril 2006
    Messages
    37
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 37
    Par défaut
    Non ça ne change rien

    En fait je suis perdu dans mes chemins.
    Il y a celui du package :
    /MonNom/MonAppli/Test/

    et celui dans core1.1.jar :
    /MonNom/MonAppli/lib/core/Core.class

    A partir de là je ne sais pas trop où doit être placé le .jar, quel chemin doit contenir mon import...

    J'ai le même problème pour l'utilisation de JNA:
    Une des classes que je doit compiler utilise jna.jar (qui contient des classes dans /com/sun/jna/ )
    Il y a donc un import com.sun.jna.Library;

    Mais ça ne marche pas non plus, j'ai la même erreur :
    error: The import com cannot be resolved
    import com.sun.jna.Library;
    Je suis perdu...

  4. #4
    Membre chevronné
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    476
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 476
    Par défaut
    Salut,

    Tu peux placer le jar core1.1.jar ou bon te semble à partir du moment ou tu le précises correctement son emplacement dans la valeur de 'cp'.

    Ensuite pour l'import tu dois définir le chemin qualifié de la classe java à importer, c'est à dire le nom de package "'." ta classe.
    A la vue de cette trace d'erreur :
    The import MonNom cannot be resolved
    import MonNom.MonAppli.lib.core.Core;
    il faut comprendre qu'il ne reconnait même pas le premier dossier de ton package, à savoir 'MonNom'.

    J'en conlclu que soit dans core1.1.jar, aucun package ne commence par 'MonNom', soit core1.1.jar n'est pas visible lors de la compilation.
    1. Vérifie que la classe compilé porte bien ce package.
    2. Si c'est le cas, essaye la compilation avec le param -Xlint.
    Si le chemin vers ton jar est erroné, tu auras un warning.
    javac -Xlint -cp cheminVersTonJar.jar tesSources
    Par contre, le nom des package est sensible à la casse, je vois que t'as mis des majuscules dans tes exemples (la norme est en miniscule) , ca m'étonne...
    Quand tu dis :
    et celui dans core1.1.jar :
    /MonNom/MonAppli/lib/core/Core.class
    Ca veut bien dire que quand tu decompactes le jar, tu as à la racine l'arborescence MonNom/MonAppli/lib/core/Core.class ?
    Si c'est le cas, c'est OK, sinon le chemin du package que tu utilises dans ton java n'est pas bon.

  5. #5
    Membre averti
    Inscrit en
    Avril 2006
    Messages
    37
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 37
    Par défaut
    Ok c'est bon j'ai trouvé le problème :
    ma commande javac ne reconnait tout simplement plus l'option -cp car quand je compile avec -classpath il n'y a plus de soucis.

    C'est etrange, je suis sûr d'avoir déja compilé correctement d'autres projets avec -cp...

    En tout cas merci pour votre aide

    Moi je vais essayer de trouver pourquoi -cp ne marche plus...

    Bonne journée !

  6. #6
    Membre chevronné
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    476
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 476
    Par défaut
    Cool

    Pour l'utilisation de l'argument cp, je crois que c'est pas du standard mais un ajout de Sun pour raccourcir la commande.
    Si la version java utilisée est en dessous de la 1.5 ou que le jdk installé n'est pas une implémentation Sun (ex:OpenJDK), c'est peut -être la le problème.
    J'ai bossé sur un Ubuntu durant une mission. L'implémentation de Java installé par l'OS par défaut était OpenJdk (que j'ai vite changé).

  7. #7
    Membre averti
    Inscrit en
    Avril 2006
    Messages
    37
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 37
    Par défaut
    Ok, effectivement je compile avec gcj et non le jdk de Sun.

    Bon maintenant j'ai un autre problème

    La compil passe bien, mais à l'exécution du prog j'ai cette erreur :

    Exception in thread "main" java.lang.NoClassDefFoundError: org.geotools.factory.CommonFactoryFinder
    at org.geotools.data.DataUtilities.<clinit>(DataUtilities.java:114)
    at java.lang.Class.initializeClass(libgcj.so.10)
    at org.geotools.data.shapefile.ShpFiles.exists(ShpFiles.java:981)
    at org.geotools.data.shapefile.ShpFiles.init(ShpFiles.java:172)
    at org.geotools.data.shapefile.ShpFiles.<init>(ShpFiles.java:104)
    ...
    ...
    Pourtant j'exécute bien mon prog en définissant le bon classpath (le même que pour la compil)
    J'utilise notamment la librairie geotools "gt-main-2.6.3.jar" qui contient bien le fichier "org/geotools/factory/CommonFactoryFinder.class"

    Avez-vous une idée d'où ça peut venir ?

  8. #8
    Membre averti
    Inscrit en
    Avril 2006
    Messages
    37
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 37
    Par défaut
    Personne n'a une idée svp :s

Discussions similaires

  1. Réponses: 2
    Dernier message: 07/03/2007, 12h58
  2. Comment compiler avec javac des jar sans utiliser -cp
    Par Battosaiii dans le forum Langage
    Réponses: 7
    Dernier message: 06/10/2006, 17h03
  3. Conflit compilation/package debian
    Par Drmalcolm dans le forum Applications et environnements graphiques
    Réponses: 2
    Dernier message: 08/06/2006, 12h47
  4. [POI] echec de compil, package introuvable
    Par hugo123 dans le forum Documents
    Réponses: 2
    Dernier message: 05/10/2005, 11h33
  5. [Language][debutant] package et import : probleme
    Par debdev dans le forum Langage
    Réponses: 11
    Dernier message: 15/03/2005, 12h29

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