Javac "ne peut pas trouver le symbole"
J'ai le répertoire racine comme ceci :
├── classes
└── src
└── vehicles
├── Bicycle.java
└── BicycleMain.java
Bicycle.java
package vehicles;
public class Bicycle {
public int cadence;
public int gear;
public int speed;
public Bicycle(int startCadence, int startSpeed, int startGear) {
gear = startGear;
cadence = startCadence;
speed = startSpeed;
}
public void setCadence(int newValue) {
cadence = newValue;
}
public void setGear(int newValue) {
gear = newValue;
}
public void setSpeed(int newValue) {
speed = newValue;
}
public int getGear() {
return gear;
}
public int getCadence() {
return cadence;
}
public int getSpeed() {
return speed;
}
public void applyBrake(int decrement) {
speed -= decrement;
}
public void speedUp(int increment) {
speed += increment;
}
BicycleMain.java
package vehicles; import vehicles.*;
public class BicycleMain {
public static void main (String args[]){
Bicycle Bike = new Bicycle(10, 20, 1);
System.out.println("We have a new bicycle with speed = " +Bike.getSpeed()+", cadence = "+Bike.getCadence()+", gear = "+Bike.getGear());
} }
J'ai compilé le Bicycle.java et un succès, mais pas pour BicycleMain.java :
symbol : class Bicycle
location: class vehicles.BicycleMain
Bicycle Bike = new Bicycle(10, 20, 1);
^
src/vehicles/BicycleMain.java:6: cannot find symbol
symbol : class Bicycle
location: class vehicles.BicycleMain
Bicycle Bike = new Bicycle(10, 20, 1);
^
2 errors
J'essaie d'exécuter ces fichiers avec Netbeans et ÇA marche!!! mais pourquoi ça ne marche pas quand je compile en ligne de commandes?
source d'informationauteur andrian
Vous devez vous connecter pour publier un commentaire.
Tout d'abord, Pour compiler le fichier source de java à l'aide de
javac
vous devez spécifier les fichiers à compiler de manière explicite.Exemple:
vous n'avez pas à fournir
path
si le fichier est un répertoire de travail courant.Seconde, à chaque fois que java rencontres
import abc.xyz.ClassName;
il essaie de résoudreabc/xyz/ClassName
à l'égard de laclasspath
ou répertoire de travail courant.Donc, si vous êtes à l'intérieur des véhicules de dossier et de compiler votre code, il l'habitude de compiler, car il va chercher le dossier des véhicules à l'intérieur du dossier de véhicules(qui n'existe pas!).
mais, vous pouvez le faire à l'intérieur du véhicule lorsque le dossier
et il doit compiler, car classpath va être réglé sur le répertoire(
../
) contenant des véhicules. qui permettra de résoudre votreBicycle
classe.et ensuite utiliser
java -cp ../vehicles/BicycleMain
à exécuter.Essayez de supprimer la ligne
import vehicles.*;
deBicycleMain.java
et leur compilation avec javac en ligne de commande.Par la façon dont cela se produit parce que pendant que vous êtes dans la compilation javac vous êtes dans le dossier
vehicles
et vous écrivez une déclarationimport vehicles.*;
dansBicycleMain.java
qui signifie que le compilateur il y a un autre dossiervehicles
dans levehicles
dossier qui n'est pas le cas iciSeulement de supprimer les de la ligne d'emballage de début et ça marchera à 100%.
Allez dans le dossier dans lequel les fichiers sont stockés via un terminal et
type javac *.java
Il n'y aura pas besoin d'importer les classes trop.
J'ai résolu ce problème, la compilation à partir des "src".
Quelque chose comme ceci:
javac ./my_folder/my_file.java
Salutations