我正在做我的程序。 我正在使用 Sublime Text 并用于编译基本的 Windows CMD。 我有文件夹,其中包含每个文件 (folde todolist) 在这个文件夹中我有包。在这个包中,我有类 (Gui.java(packgae (folder) gui_pckg))。此类中的代码如下所示:
package gui_pckg;
导入 javax.swing.; 导入 java.awt.;
公共类 Gui {
public JFrame frame = new JFrame("To Do List");
public Gui() {
frame.setSize(500, 800);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}
}
而且编译得很好。
但是,当我尝试编译 Main.java 时,它会引发错误。 Main.java 中的代码:
import gui_pckg.Gui;
公共类 Main {
public static void main(String[] args) {
Gui gui = new Gui();
}
}
为了编译,我在 cmd 中输入了基本的编译命令。
请帮忙。
答案 0 :(得分:1)
使用 IDE。当您拥有复杂的包装结构时,尝试在命令行上进行编译很快就会变得太麻烦而无法获得回报。
如果没有 IDE,您可以期望为您移动的文件调整所有包,并在重命名包时调整包文件的所有包名称。更不用说,即使你制作了一个 bash 脚本来编译你的 java 程序,这也需要手动调整每个新文件。 TLDR:只需使用 IDE。
如果你绝对坚持不带一个(根本不推荐)继续,为了避免复杂性,你所有的java类应该在同一个包(目录)中,也就是没有打包。 Java 在同一个目录中看到所有类。您无需打包即可导入。
当你开始这样的结构时:
|-bin
|-src
|-util
| |-Util.java
|-Main.java
然后您需要开始打包,因为并非所有文件都存在于同一目录中。避免这种情况,否则您必须手动设置类路径、二进制文件和源文件夹。
在 bash 中,这类似于:
cd src; javac -cp ".:util" -d "../bin" ./Main.java ./util/Util.java
然后要运行,您将拥有以下内容:
java Main
到 src 的 cd 实际上非常重要,因为如果您不在顶级根目录中进行编译,那么这些包对 javac 将没有意义。