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 :

compiler des classes qui en importe d'autre


Sujet :

avec Java

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    73
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2007
    Messages : 73
    Par défaut compiler des classes qui en importe d'autre
    Bonjour à tous,

    la question va p-e vous parraitre débile, mais je dois compiler des classes en ligne de commande avec javac, comment compiler une classe java qui appelle une autre classe java qui est dans les classe qui vont etre compilée avec elle.

    Pour etre plus clair.

    Class1

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    package packclass;
     
    import patati
    import patata
    import..
     
    fonction test1
    et Class2

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    import class1
     
    test1 test = new test1
    suis je clair?

    merci d'avance de votre aide

  2. #2
    Expert éminent
    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
    Billets dans le blog
    1
    Par défaut
    Salut,


    Il faut définir correctement ton classpath et ton sourcepath.

    Le classpath correspond à l'emplacement où la machine virtuelle recherchera les classes déjà compilées.
    Le sourcepath correspond à l'emplacement où le compilateur recherchera les fichiers sources.

    Rappel : cela correspond au répertoire de base contenant le package initial.

    a++

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    73
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2007
    Messages : 73
    Par défaut
    Citation Envoyé par adiGuba Voir le message
    Le classpath correspond à l'emplacement où la machine virtuelle recherchera les classes déjà compilées.
    Ok pour le source path mais si elle n'ont pas encore été compilée a quoi sert le classpath?

    merci pour l'aide en tout cas..

  4. #4
    Membre chevronné Avatar de miloux32
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    545
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2003
    Messages : 545
    Par défaut
    Citation Envoyé par bogizo Voir le message
    Ok pour le source path mais si elle n'ont pas encore été compilée a quoi sert le classpath?

    merci pour l'aide en tout cas..
    sinon un javac *.java ca peut etre utile des fois ....

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    73
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2007
    Messages : 73
    Par défaut
    Citation Envoyé par miloux32 Voir le message
    sinon un javac *.java ca peut etre utile des fois ....
    si ca avait été aussi simple je n'aurais pas emmer**** les gens avec cette question.................

  6. #6
    Membre Expert

    Homme Profil pro
    Architecte logiciel
    Inscrit en
    Novembre 2006
    Messages
    1 252
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Architecte logiciel
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 252
    Par défaut
    Si les sources sont dans le même package/répertoire, javac *.java marche.

    Si ce n'est pas le cas, tu dois énumérer les sources c'est tout.

  7. #7
    Membre chevronné Avatar de miloux32
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    545
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2003
    Messages : 545
    Par défaut
    Citation Envoyé par bogizo Voir le message
    si ca avait été aussi simple je n'aurais pas emmer**** les gens avec cette question.................
    On en sait jamais, tu sais y'a des questions sur "comment compiler" "c'est quoi javac ?" etc
    donc a force ...

  8. #8
    Expert éminent
    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
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par bogizo Voir le message
    Ok pour le source path mais si elle n'ont pas encore été compilée a quoi sert le classpath?
    Le classpath sert à retrouver les classes qui ont déjà été compilé, ou bien les classes des APIs externes que tu utilises...


    Par exemple si tu as un projet de la sorte :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    chemin_du_projet
        /src
        /bin
    src contient l'arborescence des sources, et bin contiendra ton code compilé.

    Donc il faut utiliser les options suivantes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    -sourcepath chemin_du_projet/src -classpath chemin_du_projet/bin -d chemin_du_projet/bin
    • Le sourcepath permet donc au compilateur de retrouver les autres sources s'il en a besoin. S'il n'est pas indiqué le sourcepath prendra la même valeur que le classpath.
    • Le classpath permet de retrouver les classes déjà compilé. Que ce soit tes propres classes ou bien d'éventuelles librairies externes. S'il n'est pas indiqué le classpath correspondra au répertoire courant, ce qui n'est correct que dans le cas où tu n'utilises pas de package (ce qui est plutôt déconseillé).
    • Enfin l'option -d permet d'indiquer où seront stocké les classes généré (en respectant l'arborescence des packages). S'il n'est pas précisé le fichier *.class sera enregistré dans le même répertorie que le fichier source.



    Donc, lorsqu'on compile un fichier A.java qui référence une classe monpackage.B, le compilateur la recherchera dans l'ordre :
    • Dans le classpath s'il trouve le fichier *.class correspondant, donc bin/monpackage/B.class
    • Dans le sourcepath s'il trouve le fichier *.java correspondant pour le compiler, donc src/monpackage/B.java



    a++

  9. #9
    Membre éclairé
    Avatar de natoine
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Décembre 2007
    Messages
    393
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Chercheur en informatique

    Informations forums :
    Inscription : Décembre 2007
    Messages : 393
    Par défaut
    Alors voilà, dans mon cas, je fais un import d'une classe venant d'un autre package que j'ai déjà compilé en .jar.

    Comment je fais dans ce cas?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    import autre_projet.la_classe_dont_jai_besoin;
    A force de trop utiliser eclipse, je sais plus compiler avec javac....
    www.natoine.fr
    natoine.developpez.com
    Principalement du Java avec un soupçon de réseaux sociaux.

  10. #10
    Expert éminent
    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
    Billets dans le blog
    1
    Par défaut
    L'autre jar doit être renseigné dans le classpath...

    a++

  11. #11
    Rédacteur/Modérateur

    Avatar de bouye
    Homme Profil pro
    Information Technologies Specialist (Scientific Computing)
    Inscrit en
    Août 2005
    Messages
    6 900
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Nouvelle-Calédonie

    Informations professionnelles :
    Activité : Information Technologies Specialist (Scientific Computing)
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Août 2005
    Messages : 6 900
    Billets dans le blog
    54
    Par défaut
    Citation Envoyé par Tommy31 Voir le message
    Si les sources sont dans le même package/répertoire, javac *.java marche.

    Si ce n'est pas le cas, tu dois énumérer les sources c'est tout.
    Il reste une autre option qui revient au meme mais evite de tout taper a la ligne de commande : il suffit d'utiliser un script externe (un batch ou un shell-script suivant le systeme surlequel on tourne) listant recursivement les fichiers du package source (dans le cas de plusieurs repertoire) et sauvegardant le resultat dans un fichier txt quelconque (au harsard sources.txt). Il suffit alors de passer source.txt a javac en le prefixant par @ ce qui ferait que Java utilisera le contenu de ce fichier plutot que le fichier lui-meme.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    javac -cp [...] -d [...] -sourcepath [...] @sources.txt
    Merci de penser au tag quand une réponse a été apportée à votre question. Aucune réponse ne sera donnée à des messages privés portant sur des questions d'ordre technique. Les forums sont là pour que vous y postiez publiquement vos problèmes.

    suivez mon blog sur Développez.

    Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the universe trying to produce bigger and better idiots. So far, the universe is winning. ~ Rich Cook

Discussions similaires

  1. Réponses: 6
    Dernier message: 11/12/2007, 17h55
  2. [Tomcat/Struts]non compilations des classes!
    Par jazer dans le forum Struts 1
    Réponses: 9
    Dernier message: 11/07/2006, 14h03
  3. Des classes qui discutent...
    Par comme de bien entendu dans le forum Langage
    Réponses: 4
    Dernier message: 27/03/2006, 17h45
  4. [Débutant] J'ai un problème avec la compilation des classes
    Par Paulinho dans le forum Eclipse Java
    Réponses: 2
    Dernier message: 19/11/2005, 14h23
  5. [javac] code pour lancer la compilation des classes
    Par viena dans le forum Général Java
    Réponses: 6
    Dernier message: 19/07/2004, 17h41

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