包的javac编译问题

javac compilation issue with packages

鉴于此(game.Game.javagame.Player.javagame.io.InputConsole.java):

src  
|_game  
  Game.java  
  Player.java
  |_io
    InputConsole.java  

我一直在尝试使用 javac 在控制台上编译这个项目(尝试在 SO 和互联网上找到的各种解决方案)但我一直失败。我也尝试使用批处理文件,但在任何一种情况下,我得到的都是 "cannot find symbol" 错误。
由于几乎所有相关问题的答案都建议使用像 Ant 或 Maven 这样的构建工具,所以我决定尝试使用 Ant(第一次)。这是我的 Ant 文件的样子:

<project default="run" name="Tic_Tac_Toe">
    <target name="run" depends="compile">
        <java classname="game.Main">
            <classpath path="bin" />
        </java>
    </target>
    <target name="compile">
        <javac srcdir="." destdir="bin"/>
    </target>
</project>

这是输出的摘录:

C:\Users\...\src\game\io\InputConsole.java:10: error: cannot find symbol
  public Player getPlayer(Sign sign) {

symbol: class Player
location: class InputConsole

PS:当我将 InputConsole.java 移动到 game 包时它起作用了。所以我确定 类 本身没有问题。 我认为问题要么是我没有为编译器提供正确的路径,要么是我的包结构有误。

您需要同时导入两者。包之间没有层次结构,尽管看起来 game.io 不是 "sub-package" 游戏,因为没有 sub-package 这样的东西。

对于 package game; 中的 class,您需要 import game.io.InputConsole;。在包 game.io; 中,您需要 import game.*;.

请注意 * 只是为了方便,最好单独导入每个引用的 class。