我的编码经验只回溯了几年,所以这个问题应该很容易回答。
我写了两个接口:Class和Game。接口CLASS应该扩展接口GAME。
以下是两个界面来源:
package Impl;
public interface Game
{
//METHODS AND VARS
}
package Impl;
public interface Class extends Game
{
//METHODS AND VARS
}
现在,当我尝试编译第二个接口时,出现以下错误
class.java:4: cannot find symbol
symbol: class Game
public interface Class extends Game
^
我的Game类被编译,类文件与两个java文件在同一目录中。我一直无法找到解决方案。有没有人有任何想法?
答案 0 :(得分:8)
类名区分大小写。您可能已创建了一个名为game
的接口,但您在Class
接口声明中将其称为Game
,编译器无法找到它。
但是,您还可以在Impl
包中进行编译。为此,您需要引用类路径,以便编译器可以从包结构的基础中查找类。您可以在课程名称前向-classpath ..
添加javac
arg:
javac -classpath .. Class.java
或者,您可以执行更常见的操作,从包结构的根目录进行编译。为此,您需要指定Class
文件的路径:
javac Impl\Class.java
您可以随时添加-classpath .
以便明确。
答案 1 :(得分:6)
您需要了解Java类路径的工作原理以及如何组织源代码。基本上,你的问题是当javac编译器编译“Class.java”时,它不希望在当前目录中找到“Game.class”。它(可能)正在“Impl / Game.class”中寻找它。
IBM“Managing the Java classpath”页面深入讨论了如何设置类路径以及java实用程序(例如java
和javac
)如何使用它来查找类文件。 Oracle“Setting the Classpath”页面提供了更简洁的更多信息......但您需要仔细阅读。
顺便说一下,你的代码中有一些风格暴行:
Class
是一个坏主意,因为这会与默认导入的名为java.lang.Class
的类发生冲突。