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

2023-12-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 返回了上述错误。


我仍然不清楚你的问题到底出在哪里。但我会告诉你要成功的步骤。

提示:除了我现在所描述的之外,还有很多替代方案。

我假设你的源文件为Map and Field没有任何包声明和导入声明。

您的项目的文件系统中应该有一个单独的项目目录。让我们命名该目录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。它具有完全相同的项目目录布局,但您不必担心用于编译的确切命令行。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

编译 .java 文件时无法找到符号错误 的相关文章

随机推荐