接口实现错误:找不到符号

时间:2014-07-02 05:50:54

标签: java interface

我正在实现以下示例界面:

package test1;
    public interface MotorVehicle {
        void run();    
        int getFuel();
    }

在课堂上

package test1;
import test1.MotorVehicle;
public class Car implements MotorVehicle
{
    int fuel;

    public void run(){
        System.out.println("Running");
    }
    public int getFuel(){
        return this.fuel;
    }
}

当我尝试编译类文件时,出现以下错误:

Car.java:4: error: cannot find symbol
public class Car implements MotorVehicle
                            ^
  symbol: class MotorVehicle
1 error

编译步骤:

步骤:1 javac MotorVehicle.java 步骤:2 javac Car.java

我的界面和类都在同一个目录中,为什么ut拿出来找不到符号错误?

编辑: 如建议的那样,已经更改了包,并尝试再次运行相同的代码。仍然有错误。

enter image description here

4 个答案:

答案 0 :(得分:6)

问题是编译时你在错误的文件夹中。 从控制台屏幕截图中,很明显您在/test1内。但是,package test1;语句需要当前文件夹中名为test1的文件夹。它无法找到该文件夹​​/包,因此您收到错误。

解决方案是上传一个文件夹,最后进入/src,然后使用文件路径进行编译,例如: javac test1/Car.java。说明:您位于文件夹/src中,类中的package语句表示它们位于test1内的文件夹/src内。现在可以解决每个包/路径。

你不应该import同一个包中的东西。

答案 1 :(得分:2)

首先,当您的包名为test时,您必须将您的类和界面保存在名为test的文件夹中。

第二件事,因为它们位于名为test的同一文件夹中,从类定义中移除import test.MotorVehicle;

假设您的文件夹test位于g:/,以便g:/ test /包含类和接口。

然后尝试在g:/

中打开命令提示符

然后输入以下命令

用于编译

javac test/Car.java

并执行

 java test.Car

虽然你可能会得到Error: Main method not found in class test.Car  因为你的班级不包含主要的mathod

答案 2 :(得分:1)

您将通过使用cd命令进入确切的路径。由于该接口无法访问,因为类将尝试从当前/运行位置的包中找出它。

要进行此编译,您必须在编译期间指定完全(再次完全)限定的包名称。

例如

如果您的课程在a.b.test 中,请按照

进行编译
javac a/b/test/Car.java

答案 3 :(得分:0)

首先编译MotorVehicle,因为它没有任何依赖项。然后设置类路径

在发出javac Car.java编译语句之前,您需要设置Classpath

Windows

set CLASSPATH=%CLASSPATH%;<PATH_TO_COMPILED_BINARY>/

的Unix

export CLASSPATH=$CLASSPATH:<PATH_TO_COMPILED_BINARY>/

<PATH_TO_COMPILED_BINARY>不应包含test1

示例:

C:/源码/ TEST1

然后<PATH_TO_COMPILED_BINARY>应为C:/ sourcecode

<强>更新

删除import test1.MotorVehicle也可以解决问题。