Javac";找不到符号“;

Javac";找不到符号“;,java,compilation,command-line-interface,javac,Java,Compilation,Command Line Interface,Javac,我的根目录如下所示: ├── 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 startCad

我的根目录如下所示:

├── 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运行这些文件,结果很好!但为什么在CLI中编译时它不起作用?

尝试删除行
导入车辆。*来自
BicycleMain.java
并在命令行中使用javac编译它们


顺便说一句,这是因为当您在javac中编译时,您位于文件夹
vehicles
中,并且您编写了一条语句
import vehicles.*
BicycleMain.java
中,这意味着编译器在
vehicles
文件夹中有另一个文件夹
vehicles
,这里不是这样的

首先,要使用
javac
编译java源文件,需要明确指定要编译的文件

例如:

javac PathToSourceFile/FileName.java
如果源文件位于当前工作目录中,则无需提供路径

第二,每当java遇到
导入abc.xyz.ClassName
它尝试解析有关
类路径
或当前工作目录的
abc/xyz/ClassName

因此,如果您在vehicles文件夹中编译代码,它将不会编译,因为它将在vehicles文件夹中查找vehicles文件夹(该文件夹不存在!)

但是,您可以在车辆文件夹中执行此操作

javac -cp ../ BicycleMain.java
它应该编译,因为类路径将被设置为包含车辆的目录(
。/
)。这将解析你的
自行车

然后使用


java-cp../vehicles/BicycleMain
要运行。

只需从一开始删除包行,它就可以100%运行

通过终端和转到存储文件的文件夹 键入javac*.java


也不需要导入类。

我已经解决了这个问题,从“src”编译

类似这样的内容:
javac./my\u folder/my\u file.java


亲切问候

我在这里尝试了所有的解决方案,但最终我发现问题在于我使用的是不同版本的JDK和JRE

检查JRE版本:

java -version
检查JDK版本:

javac -version

你为什么发布你的课程的来源?这与你的问题有什么关系?请阅读您用于编译的类路径?您是从
src
编译的吗?我以前尝试过很多路径编译,除了“src”。我只是试着删除导入命令,然后从“src”编译,它就可以工作了!好的,谢谢。@Bohemian-我很高兴他发布了它们,至少这使它成为“独立的、可编译的、示例的”——你会怎么做?刚刚发布了“src/vehicles/BicycleMain.java:6:找不到symbol”?这是我的错误,在不正确的文件夹中编译,我删除了导入命令并尝试在“src”中编译,它工作了!谢谢…唯一对我有效的选择。顺便说一下,我正在使用Windows 7。或者,进入
src
目录(包含
vehicles
目录的目录),使用
javac vehicles/BicycleMain.java
编译,然后使用
java vehicles.BicycleMain
运行。