2009-10-13 8 views
0

Je compilais un fichier JAVA (1.4 varsion) et obtenais l'erreur suivante (environ 100 fois tous sont identiques).java: impossible de résoudre le symbole

Appli.java:721: cannot resolve symbol 
symbol : class License 
location: class test.App.Appli 
      License sellLicense = sell.getLicense(); 

J'utilisé

run/cmd/cd D:...../javac Appli.java 

j'avais la variable CLASSPATH, dans le dossier Classes des fichiers java je suis actuellement en marche.

Control panel/Settings/System/System Properties /Advanced/Environmental Variables/System Variables/ Add/CLASSPATH 

Dois-je utiliser

Comment résoudre le problème?

+0

Pourrions-nous voir un exemple du code causant les erreurs? – jjnguy

+0

Eh bien, pas toutes les 721 lignes de celui-ci, mais un échantillon. – jjnguy

+1

@vas: donc vous placez les classes dans un sous-arbre distinct, oui? Dans ce cas, vous avez probablement oublié de "cd" au bon endroit avant la compilation et n'avez pas défini '-sourcepath'. Vous devez faire l'un ou l'autre; vois ma réponse. –

Répondre

1

Vous devez définir CLASSPATH et vous assurer que vous êtes dans le bon répertoire.

En supposant que test.App.Appl tente de référence test.App.License, la structure de répertoire doit être:

/somedir/test 
/somedir/test/App 
/somedir/test/App/Appl.java 
/somedir/test/App/License.java 

Vous devez définir $CLASSPATH-"/somedir", puis modifiez votre répertoire en cours à /somedir et exécutez le compilateur javac test/App/*.java; par exemple.

$ export CLASSPATH="/somedir" 
$ cd /somedir 
$ javac test/App/*.java 

Vous pouvez également utiliser l'option de ligne de commande -cp avec le javac (et plus tard, la java) commande, et que vous exécutez le compilateur javac à partir d'un autre répertoire en utilisant l'option -sourcepath. L'autre possibilité est que le package pour License n'est pas test.App. Si tel est le cas, vous devez ajuster la structure du répertoire pour qu'elle corresponde au nom du package et ajouter une instruction import à la classe Appl.

EDIT: Si vous remarquez un build.xml ou pom.xml (ou peut-être même un Makefile) dans l'arbre source, vous devriez probablement pas utiliser javac directement. Un build.xml est pour la construction en utilisant Ant, un 'pom.xml is for Maven (or Ivy) and a Makefile or makefile is for make`.

+0

La définition de la variable d'environnement classpath est donc du dernier millénaire ... Il vaut mieux ne pas la définir, le répertoire courant sera recherché dans tous les cas. –

+0

@Michael: en fait, il devrait vraiment utiliser Ant ou Maven, donc ne pas couper les poils. –

1

Il vous manque probablement une instruction import.

+0

J'essaie d'exécuter un code préexistant utilisé pour la production – vas

2

Il me semble que vous devez compiler la classe License avec la classe Appli. Jetez un oeil à la Javac Documentation pour plus de détails, mais vous pouvez faire quelque chose comme ce qui suit:

javac Appli.java License.java 

Si Licence est dans une bibliothèque, vous devrez ajouter la bibliothèque à votre classpath de compilation. Ceci est fait avec le drapeau -classpath:

javac -classpath "classpath" Appli.java 
+0

Devrais-je utiliser javac -classpath "classpath" Appli.java chaque fois que j'exécute "javac Appli.java" – vas

+2

@vas: oui ... ou régler $ CLASSPATH, ou utilisez un outil de construction. –

Questions connexes