包的javac编译问题
javac compilation issue with packages
鉴于此(game.Game.java
、game.Player.java
、game.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。
鉴于此(game.Game.java
、game.Player.java
、game.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。