![](/img/trans.png)
[英]javac cannot find symbol DefaultTableCellHeaderRenderer
[英]Javac "cannot find symbol"
我有这样的根目录:
├── classes
└── src
└── vehicles
├── Bicycle.java
└── BicycleMain.java
自行车.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;
}
自行车主程序
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());
} }
我编译了 Bicycle.java 并成功了,但不是 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
我尝试使用 Netbeans 和 IT WORKS 运行这些文件! 但是为什么当我在 CLI 中编译时它不起作用?
首先,要使用javac
编译 java 源文件,您需要明确指定要编译的文件。
例子:
javac PathToSourceFile/FileName.java
如果源文件在当前工作目录中,则不需要提供path
。
其次,每当java遇到import abc.xyz.ClassName;
它尝试根据classpath
或当前工作目录解析abc/xyz/ClassName
。
因此,如果您在车辆文件夹内并编译您的代码,它将不会编译,因为它将在文件夹车辆(不存在!)中查找文件夹车辆。
但是,您可以在车辆文件夹中执行此操作
javac -cp ../ BicycleMain.java
它应该编译,因为类路径将设置为包含车辆的目录( ../
)。 这将解决您的Bicycle
课程。
然后使用
java -cp ../ vehicles/BicycleMain
来运行。
尝试删除线import vehicles.*;
来自BicycleMain.java
并在命令行中使用 javac 进行编译。
顺便说一下,这是因为当你在 javac 中编译时,你在文件夹vehicles
,你写了一条语句import vehicles.*;
在BicycleMain.java
,这对编译器来说意味着在vehicles
文件夹中还有另一个文件夹vehicles
,这里不是这种情况
我已经解决了这个问题,从“src”编译。
像这样: javac ./my_folder/my_file.java
亲切的问候
我在这里尝试了所有解决方案,但最终我发现问题在于我使用了不同版本的 JDK 和 JRE。
检查 JRE 版本:
java -version
检查JDK版本:
javac -version
只需从一开始就删除包装线,它就会 100% 工作。
通过终端转到存储文件的文件夹并键入javac *.java
也不需要导入类。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.