我的根目录是这样的:
├── 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());
} }
我编译了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中编译时它不起作用?
答案 0 :(得分:22)
首先,要使用javac
编译java源文件,您需要指定要显式编译的文件。
示例:
javac PathToSourceFile/FileName.java
如果源文件在当前工作目录中,则无需提供path
。
其次,每当java遇到import abc.xyz.ClassName;
时,它会尝试解析abc/xyz/ClassName
或当前工作目录的classpath
。
因此,如果您在车辆文件夹内并编译您的代码,它将无法编译,因为它将查找文件夹车辆内的文件夹车辆(不存在!)。
但是,您可以在车辆文件夹
内执行此操作javac -cp ../ BicycleMain.java
它应该编译,因为classpath将设置为包含车辆的目录(../
)。这将解决您的Bicycle
课程。
然后使用
java -cp ../ vehicles/BicycleMain
要跑。
答案 1 :(得分:8)
尝试从import vehicles.*;
删除行BicycleMain.java
,然后在命令行中使用javac进行编译。
顺便说一下,因为当你在javac中编译时,你在vehicles
文件夹中并在import vehicles.*;
中写了一个语句BicycleMain.java
,这意味着编译器有另一个文件夹vehicles
文件夹中的vehicles
,而不是此处
答案 2 :(得分:0)
我已经解决了这个问题,从“src”编译。
这样的事情:javac ./my_folder/my_file.java
亲切的问候
答案 3 :(得分:0)
我在这里尝试了所有解决方案,但最终我发现问题出在我使用的是JDK和JRE的不同版本。
检查JRE版本:
const routes = [
{ path: 'user', component: UserComponent, canActivate: [AuthGuard]},...]
检查JDK版本:
java -version
答案 4 :(得分:-1)
只需从开头删除包装行,它就可以100%工作。
转到通过终端和存储文件的文件夹 输入 javac * .java
也不需要导入课程。