and*_*ian 16 java compilation javac command-line-interface
我有这样的根目录:
??? classes
??? src
??? vehicles
??? Bicycle.java
??? BicycleMain.java
Run Code Online (Sandbox Code Playgroud)
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;
}
Run Code Online (Sandbox Code Playgroud)
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());
} }
Run Code Online (Sandbox Code Playgroud)
我编译了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
Run Code Online (Sandbox Code Playgroud)
我尝试使用Netbeans和IT WORKS运行这些文件!但是为什么我在CLI中编译时它不起作用?
Sus*_* Kr 22
首先,要使用javac您编译java源文件,需要指定要显式编译的文件.
例:
javac PathToSourceFile/FileName.java
Run Code Online (Sandbox Code Playgroud)
您无需提供pathif源文件在当前工作目录中.
其次,每当遇到的java import abc.xyz.ClassName;它试图解决abc/xyz/ClassName关于classpath或当前工作目录.
因此,如果你在车辆文件夹内并编译你的代码,它将不会编译,因为它将寻找文件夹车辆内的文件夹车辆(它不存在!).
但是,你可以在车辆文件夹内执行此操作
javac -cp ../ BicycleMain.java
Run Code Online (Sandbox Code Playgroud)
它应该编译,因为classpath将设置为../包含车辆的directory().这将解决你的Bicycle课程.
然后使用
java -cp ../ vehicles/BicycleMain 跑步.
尝试删除行中的行import vehicles.*;,BicycleMain.java并在命令行中使用javac进行编译.
顺便说这是因为当你在的javac正在编译你的文件夹中vehicles,你写的一份声明import vehicles.*;中BicycleMain.java,这意味着对编译器有另一个文件夹vehicles的内vehicles夹这是不是这里的情况
| 归档时间: |
|
| 查看次数: |
57144 次 |
| 最近记录: |