Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2268 connectés 

  FORUM HardWare.fr
  Programmation
  Java

  Classes "vues" par javac mais compilation impossible

 



 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Classes "vues" par javac mais compilation impossible

n°1951038
scaven13
Posté le 17-12-2009 à 00:15:09  profilanswer
 

Bonjour à tous,
 
J'ai dans mon projet Java plusieurs packages.
Au niveau des répertoires présents sur le disques dur, cela donne :

Code :
  1. src/
  2.   nomProjet/
  3.     package1/
  4.       interfaces/
  5.         fichiers .java
  6.       implem/
  7.         fichiers .java
  8.     package2/
  9.       interfaces/
  10.         fichiers .java
  11.       implem/
  12.         fichiers .java


 
J'aimerais compiler le projet avec un fichier ant.
 
J'utilise l'instruction suivante dans build.xml

Code :
  1. <javac
  2.   srcdir="src"
  3.   destdir="bin"
  4.   source="1.5"
  5.   target="1.5"
  6. />


 
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.

mood
Publicité
Posté le 17-12-2009 à 00:15:09  profilanswer
 

n°1951045
cbeyls
Hail to the King, Baby
Posté le 17-12-2009 à 00:58:24  profilanswer
 

Peux tu donner un exemple de nom de package dans un fichier source?

n°1951051
scaven13
Posté le 17-12-2009 à 01:25:34  profilanswer
 

J'ai par exemple le fichier source IManagementRequestParser.java, dont le package est pictiona2ry.protocol.interfaces.
 
Il contient bien entendu  

Code :
  1. package pictiona2ry.protocol.interfaces;


en première ligne et est situé dans le dossier src/pictiona2ry/protocol/interfaces.
 
Son implémentation, ManagementRequestParser.java, est dans le package pictiona2ry.protocol.impl avec la déclaration dans le code source et le répertoire qui vont bien.
 
Et si IManagementRequestParser.java déclare une méthode parse() (que ManagementRequestParser.java implémente bien entendu, avec une annotation @Override), alors j'ai une erreur du type :
The method parse() must override a superclass method.
 
J'ai pourtant bien précisé implements IManagementRequestParser.
D'ailleurs Eclipse ne trouve rien à redire à mon code et l'exécute parfaitement.


Message édité par scaven13 le 17-12-2009 à 01:31:56
n°1951055
souk
Tourist
Posté le 17-12-2009 à 02:54:17  profilanswer
 

enleve le @Override, la tu n'overrides pas de methode, tu implementes [:dawao]

n°1951215
scaven13
Posté le 17-12-2009 à 15:01:34  profilanswer
 

souk a écrit :

enleve le @Override, la tu n'overrides pas de methode, tu implementes [:dawao]


 
Le @Override sur une méthode implémentant une interface fonctionne avec Java 1.6...mais pas avec Java 1.5 !
Et c'est tout là mon problème.
 
En effet j'arrive à compiler en ligne de commande avec la commande suivante :

Code :
  1. javac -d bin/ -source 1.6 -target 1.6 src/


 
J'ai donc modifié mon fichier build.xml de la façon suivante :

Code :
  1. <javac
  2.   srcdir="src"
  3.   destdir="bin"
  4.   source="1.6"
  5.   target="1.6"
  6. />


 
mais j'obtiens alors l'erreur suivante :

Code :
  1. [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 ?

n°1951314
cbeyls
Hail to the King, Baby
Posté le 17-12-2009 à 19:18:55  profilanswer
 

Si tu mets l'annotation @override sur une méthode que tu n'overrides pas, le compilateur génère une erreur. Donc, vire cette annotation et tout ira bien!
 
Plus d'infos dans la doc:
http://java.sun.com/javase/7/docs/ [...] rride.html
 
Edit: Mea culpa, la documentation dit "override or IMPLEMENT a method declared in a supertype" donc à priori tu as raison, pour une implémentation ça fonctionne aussi depuis 1.6. Mais franchement je te déconseille d'utiliser cette annotation si tu ne fais qu'implémenter une méthode, déjà rien que le nom "override" induit en erreur.


Message édité par cbeyls le 17-12-2009 à 20:02:31
n°1951349
scaven13
Posté le 17-12-2009 à 21:44:33  profilanswer
 

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.


Message édité par scaven13 le 17-12-2009 à 21:45:09
n°1951521
cbeyls
Hail to the King, Baby
Posté le 18-12-2009 à 13:44:22  profilanswer
 

C'est une machine Windows? Mac?
Tu utilises le Ant intégré à Eclipse ou un autre?
 
Peut-être que le JRE par défaut sur ta machine est un JRE 1.5

n°1951553
brisssou
8-/
Posté le 18-12-2009 à 15:13:46  profilanswer
 

un p'tit coup de javac -version t'en dira plus


---------------
HFR - Mes sujets pour Chrome - Firefox - vérifie les nouveaux posts des topics suivis/favoris
n°1951757
scaven13
Posté le 19-12-2009 à 16:27:06  profilanswer
 

cbeyls a écrit :

C'est une machine Windows? Mac?
Tu utilises le Ant intégré à Eclipse ou un autre?
 
Peut-être que le JRE par défaut sur ta machine est un JRE 1.5


 
C'est une machine sous Fedora.
Je lance Ant directement depuis le terminal, donc pas celui intégré à Eclipse.
 
Il y a en effet plusieurs JRE/JDK installés.

brisssou a écrit :

un p'tit coup de javac -version t'en dira plus


 
Voici le résultat de quelques commandes lancées dans un terminal :
 

Code :
  1. java -version
  2. java version "1.6.0_0"
  3. OpenJDK Runtime Environment (IcedTea6 1.6) (fedora-30.b16.fc11-i386)
  4. OpenJDK Client VM (build 14.0-b16, mixed mode)
  5. javac -version
  6. Eclipse Java Compiler 0.894_R34x, 3.4.2 release, Copyright IBM Corp 2000, 2008
  7. ant -version
  8. Apache Ant version 1.7.1 compiled on February 23 2009


 
La résultat du javac -version me surprend quelque peu. C'est donc le compilateur intégré à Eclipse qui prend en charge la compilation ?


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Java

  Classes "vues" par javac mais compilation impossible

 

Sujets relatifs
Impossible d'afficher une valeur pour un count égal à 0Ordre de compilation
Impossible de mettre des liens sur une anim FLASHErreur de compilation Java "cannot find symbol" sous ubuntu 9.04
:hover impossible avec IEConcepteur de vues Visual c++2005
Bug Visual Basic : impossible de voir la ligne de l'erreurImpossible de lancer une fonction ...
vba excell variable texte dans cellule active impossibleCompilation avec boost
Plus de sujets relatifs à : Classes "vues" par javac mais compilation impossible


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR