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

EDI et Outils pour Java Discussion :

Classes vues par "javac" mais compilation impossible


Sujet :

EDI et Outils pour Java

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    93
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 93
    Points : 87
    Points
    87
    Par défaut Classes vues par "javac" mais compilation impossible
    Bonjour à tous,

    J'ai dans mon projet Java plusieurs packages.
    Au niveau des répertoires présents sur le disques dur, cela donne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    src/
      nomProjet/
        package1/
          interfaces/
            fichiers .java
          implem/
            fichiers .java
        package2/
          interfaces/
            fichiers .java
          implem/
            fichiers .java
    J'aimerais compiler le projet avec un fichier ant.

    J'utilise l'instruction suivante dans build.xml
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <javac
      srcdir="src"
      destdir="bin"
      source="1.5"
      target="1.5"
    />
    build.xml est bien entendu dans le répertoire parent de src/.

    Lorsque je lance ant, je reçois le message :
    [javac] Compiling 25 sources files to chemin/vers/bin

    Je pense donc que le compilateur voit tous mes fichiers (puisqu'il m'en indique 25).

    Mais la compilation ne fonctionne pas.
    J'ai par exemple des erreurs "The method xxx must override a superclass method".
    J'en conclus que le compilateur n'arrive pas à accéder aux différentes classes. Ce qui contredis le message ci-dessus.

    Si vous pouviez m'éclairer quant à la marche à suivre.

  2. #2
    Membre habitué
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    104
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Mars 2004
    Messages : 104
    Points : 135
    Points
    135
    Par défaut
    Salut,

    tes conclusions sont fausses.
    Il faut essayer de comprendre les messages d'erreurs. Le compilo te dit qu'une méthode d'une classe qui a, je suppose, l'annotation @override doit redéfinir une méthode d'une classe parent. Vérifie la classe et la méthode mentionnées par le compilo pour résoudre l'erreur

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    93
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 93
    Points : 87
    Points
    87
    Par défaut
    J'ai un petit peu avancé dans la recherche de la solution.

    Le problème vient du fait que @Override n'est pas supporté par Java 1.5 quand il porte sur une méthode implémentant une interface...alors qu'il est supporté par Java 1.6.

    J'arrive à compiler en ligne de commande avec la commande suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    javac -d bin/ -source 1.6 -target 1.6 src/
    J'ai donc modifié mon fichier build.xml de la façon suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <javac
      srcdir="src"
      destdir="bin"
      source="1.6"
      target="1.6"
    />
    mais j'obtiens alors l'erreur suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    [javac] Compliance level '1.5' is incompatible with source level '1.6'.
    A compliance level '1.6' or better is required
    Je lui demande pourtant de compiler en 1.6, non ?
    Pourquoi l'erreur fait-elle référence à un source level 1.5 ?

    Je précise que mon code compile et s'exécute parfaitement dans Eclipse.

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    93
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 93
    Points : 87
    Points
    87
    Par défaut
    Le problème est résolu, mais pas de la façon dont je l'aurais souhaité.

    Il s'avère que ant utilise (sur ma machine en tout cas) le compilateur Java 1.5.

    Impossible donc d'utiliser @Override sur les méthodes implémentant une interface.

    J'ai donc enlevé les @Override qui posaient problème.

    J'en ai profité pour mettre le "Compliance level" d'Eclipse à 1.5.

    De cette façon Eclipse détecte les mêmes erreurs que le compilateur de ant.

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

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