"无法查找符号"编译错误

Jay*_*Jay 6 java compiler-errors

我的编码经验只能回溯几年,所以这个问题应该很容易回答.

我写了两个接口:Class和Game.接口CLASS应该扩展接口GAME.

以下是两个界面来源:

package Impl;

public interface Game
{
    //METHODS AND VARS
}


package Impl;    

public interface Class extends Game
{
    //METHODS AND VARS
}
Run Code Online (Sandbox Code Playgroud)

现在,当我尝试编译第二个接口时,我收到以下错误

class.java:4: cannot find symbol
symbol: class Game
public interface Class extends Game
                               ^
Run Code Online (Sandbox Code Playgroud)

我的Game类被编译,类文件与两个java文件在同一目录中.我一直无法找到解决方案.有没有人有任何想法?

akf*_*akf 8

类名称区分大小写.您可能已经创建了一个名为的接口game,但您在Class接口声明中将Game其引用为编译器无法找到的接口.

但是,您还可以从Impl包中进行编译.为此,您需要引用类路径,以便编译器可以从包结构的基础中查找类.您可以在类名前添加一个-classpath ..arg javac:

javac -classpath .. Class.java
Run Code Online (Sandbox Code Playgroud)

或者,您可以执行更常见的操作,从包结构的根目录进行编译.为此,您需要指定Class文件的路径:

javac Impl\Class.java
Run Code Online (Sandbox Code Playgroud)

你总是可以添加一个-classpath .清楚的.

  • Jay,我看到你是StackOverflow的新手(欢迎!).如果它解决了你的问题,请"接受"akf的解决方案.您接受的答案越多,将来就越愿意回答您的问题. (7认同)

Ste*_*n C 6

您需要了解Java类路径的工作方式以及如何组织源代码.基本上,你的问题是当javac编译器编译"Class.java"时,它不希望在当前目录中找到"Game.class".它(可能)正在"Impl/Game.class"中寻找它.

IBM" 管理Java类路径 "页面提供了有关如何设置类路径以及java实用程序(例如javajavac)如何使用它来查找类文件的深入讨论.Oracle" 设置类路径 "页面提供了更简洁的更多信息......但您需要仔细阅读.

顺便说一句,你的代码中有一些风格暴行:

  • Java包名称应该全部小写.
  • 调用类Class是一个坏主意,因为它与java.lang.Class默认导入的被调用类冲突.