【发布时间】:2019-09-21 10:48:10
【问题描述】:
我有一个基本的包结构。我在第一个包“pack1”中有主类和播放器类,然后在子目录“pack2”中有一个怪物类。运行这个程序时我需要使用 javac 和 java 命令,因为这是我的作业,但它只是告诉我包 pack1.pack2 不存在。我正在尝试使用命令“javac Main.java”来运行它。如果我删除包并将它们放在同一个文件夹中,那么命令“javac Main.java”就可以正常工作。当我使用 Visual Studio Code“运行”命令运行该程序时,它运行良好。
我的文件结构如下:
pack1
|_ Main.java
|_ Player.java
|_ pack2
|_ Monster.java
在过去的 2 个小时里,我一直在与这个问题作斗争,试图用谷歌搜索不同的解决方案,但没有运气。我可能以错误的方式使用 javac 命令。我曾尝试使用 -d 参数和一些路径参数,但由于我不清楚它们,这可能不是使用它们的正确方法。
package pack1;
import pack1.pack2.Monster;
public class Main extends Monster {
public static void main(String[] args) {
killPlayer();
}
}
package pack1;
public class Player {
public void shout() {
System.out.println("Shout");
}
}
package pack1.pack2;
import pack1.Player;
public abstract class Monster {
public static void killPlayer() {
Player p = new Player();
p.shout();
}
}
【问题讨论】:
-
您需要明确地将所有文件路径提供给 javac 编译器。查看这篇文章以递归编译目录中的所有文件。 stackoverflow.com/a/8769536/3450689