当前位置: 首页 > 面试题库 >

编译.java文件时找不到符号错误

宦高岑
2023-03-14
问题内容

美好的一天,我在同一目录中有两个类Map和Field。我成功地编译了Field.java,但是当我编译Map.java时,我得到了:

  Map.java:4: error: cannot find symbol
    private Field[][] gameMap;
            ^
  symbol:   class Field
  location: class Map
  Map.java:61: error: cannot find symbol
       public Field getFieldPosition(){
              ^
 symbol:   class Field
 location: class Map
 Map.java:8: error: cannot find symbol
                gameMap = new Field[10][20];
                              ^
 symbol:   class Field
 location: class Map
 3 errors

这是两个类的代码:

public class Map {
private Field[][] gameMap;
private int row, col;
private int rowPlayer, colPlayer;
public Map(){//constructor
    gameMap = new Field[10][20];
    for(row=0;row<10;row++){
        for(col=0;col<20;col++){
            gameMap[row][col].setFieldUntilled();
        }
    }
    rowPlayer = 0;
    colPlayer = 0;
    gameMap[rowPlayer][colPlayer].setPlayerLoc();
}
public Field getFieldPosition(){
    return gameMap[rowPlayer][colPlayer];
}
}

对于Field.java(如有必要):

public class Field {
private int playerLoc;
private char fieldType;
public Field(){//constructor
    fieldType = 'u';
    playerLoc = 0;
}
public void setFieldUntilled(){
    fieldType = 'u';
}
public void setFieldTilled(){
    fieldType = 't';
}
public void setPlayerLoc(){
    playerLoc = 1;
}
public void removePlayerLoc(){
    playerLoc = 0;
}
public int getPlayerLoc(){
    return playerLoc;
}
}

我分别编译了Field.java和Map.java:javac Field.java没有返回任何错误,但是javac Map.java返回了以上错误。


问题答案:

我仍然不清楚您的问题到底在哪里。但是,我将告诉您成功的步骤。

提示:我现在将描述许多替代方案。

我assumme,对于你的源文件Map,并Field没有任何包声明和import语句。

您应该在文件系统中某个项目的某个位置有一个单独的项目目录。让我们命名该目录my- game。此外,您应该在其中包含源目录。命名吧src。您应该将源文件放入该源目录。您的项目目录布局现在看起来像:

my-game/
  |-- src/
       |-- Field.java
       |-- Map.java

如果要Map使用简单的命令编译类,则应在src目录中并调用:

my-game/src> javac Map.java

这将导致两个源文件都被编译。产生的类文件也将放入该源目录中。

到目前为止,一切都很好。编译时最好放在项目目录中:

my-game> javac src/Map.java

但这现在会导致您描述的编译器错误(并且不会生成任何类文件),因为现在Field在错误的目录中查找了该类。您需要告诉编译器在哪里查找它们:

my-game> javac -sourcepath src src/Map.java

这导致了与以前相同的结果。

现在更好的是将源目录和目标目录分开。首先bin在您的项目目录中创建一个目录,然后进行编译:

my-game> javac -sourcepath src -d bin src/Map.java

这将导致以下目录布局:

my-game/
  |-- src/
  |    |-- Field.java
  |    |-- Map.java
  |-- bin/
       |-- Field.class
       |-- Map.class

如果成功完成了最后一步,请使用Eclipse之类的IDE。它完全具有此项目目录的布局,但是您不必为确切的命令行而烦恼。



 类似资料:
  • 问题内容: 嘿,我刚开始我的第一本Java编程书籍,所以这应该很容易解决。弄乱我对条件句的新知识,发现标题错误。 这是代码: 当我尝试编译时: 问题答案: 错误消息告诉您变量“输入”在您的作用域中不存在。您可能想使用Scanner对象,但将其命名为“ x”,而不是“ input”。 应该修复它。

  • 问题内容: 当代码到达递归调用增量时,我收到错误找不到符号,我不知道为什么?这是增量代码。任何帮助将不胜感激。 编辑:我真的是Java的新手,所以可以做的答案越基本越好。好的,所以我收到的错误是:BigNatural.java.35:找不到符号符号方法增量()位置:类java.lang.String temp.increment() 并在此处清除所有其他问题,是整个代码。 }公共类BigNatur

  • 嘿,我刚刚开始我的第一本关于Java的编程书,所以这应该是一个简单的修复。把我对条件句的新知识弄得乱七八糟的,结果我得到了标题错误。 代码如下: 当我尝试编译:

  • 我有这样的代码:获取一个文本文件,并将其转换为字符串,然后将字符串的部分分离为ArrayList的不同元素。 然而,当我试图编译它时,它给了我两个错误: javac Message.java Message.java:31:找不到符号symbol:变量输入位置:类消息while(input.HasNextLine()){^Message.java:32:找不到符号symbol:变量输入位置:类消息

  • 我一直在尝试使用Eclipse和Forge编译Minecraft mod,但我只是遇到错误,我想这是与链接Minecraft库有关,但不确定这是我的代码 我正在遵循一个指南,应该在最后得到一条“构建成功”的消息。指南是https://blog.usejournal.com/a-beginners-guide-to-modding-Minecraft-9A42536495F6 这里有个错误

  • 我有一段代码,它将一个文本文件转换成一个字符串,然后将字符串的一部分分离成arraylist的不同元素。 但是,当我尝试编译此文件时,它会给我两个错误: JAVAC Message.javaMessage.java:31:找不到符号符号:变量输入位置:类消息同时(input.hasNextLine()){ ^ Message.java:32:找不到符号符号:变量输入位置:类消息行=input.ne