我正在实现以下示例界面:
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拿出来找不到符号错误?
编辑: 如建议的那样,已经更改了包,并尝试再次运行相同的代码。仍然有错误。
答案 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
也可以解决问题。