java - Why I can not compile my packaged class in Java?
问题描述
I'm doing my program. I'm using Sublime Text and for compiling basic Windows CMD. I have folder, where I have every file (folde todolist) In this folder I have package. In this package I have class (Gui.java(packgae (folder) gui_pckg)). Code in this class looks like:
package gui_pckg;
import javax.swing.; import java.awt.;
public class Gui {
public JFrame frame = new JFrame("To Do List");
public Gui() {
frame.setSize(500, 800);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}
}
And it's compiled well.
But, when I'm trying to compile Main.java, it throws errors. Code in Main.java:
import gui_pckg.Gui;
public class Main {
public static void main(String[] args) {
Gui gui = new Gui();
}
}
For compiling I'm typing basic compile command into cmd.
Please help.
解决方案
使用 IDE。当你有一个复杂的打包结构时,尝试在命令行上编译很快就会变得太麻烦而无法获得回报。
如果没有 IDE,您可以期望为您移动的文件调整所有包,并在重命名包时调整包文件的所有包名称。更不用说,即使你制作了一个 bash 脚本来编译你的 java 程序,这也需要手动调整每个新文件。TLDR:只需使用 IDE。
如果您绝对坚持不使用一个(根本不推荐)继续,为避免复杂性,您所有的 java 类都应该在同一个包(目录)中,AKA,没有打包。Java 在同一个目录中看到所有类。您可以在不打包的情况下导入它们。
当你开始这样的结构时:
|-bin
|-src
|-util
| |-Util.java
|-Main.java
然后您需要开始打包,因为并非所有文件都存在于同一目录中。避免这种情况,否则您将不得不手动设置类路径、二进制文件和源文件夹。
在 bash 中,这类似于:
cd src; javac -cp ".:util" -d "../bin" ./Main.java ./util/Util.java
然后运行,您将拥有以下内容:
java Main
cd 到 src 实际上非常重要,因为如果您不在顶级根目录中进行编译,则这些包对 javac 没有意义。
推荐阅读
- yaml - 我正在使用 YAML 文件将对象值解析为 DataFilter 对象
- rest - 使用 REST 和 JSON 而不是 CSV 和 SOAP 的 SalesForce Oauth BULK API
- c++ - Firebase C++ 实时数据库连接在 Windows 上丢失
- r - 如何在ggplot2中正确绘制具有数字x值的多个箱线图?
- javascript - 角度路由错误 - this.router.navigateByUrl() 和 this.router.navigate()
- c# - C# [i, j] 将矩阵的最小“j”值添加到新数组中?
- javascript - 我如何检查是否
在一个里面
包含数据 - node.js - NodeJs Azure 函数中的临时文件夹位置问题
- sqoop - 使用 Sqoop 从 Sybase IQ 导入数据:第 1 行“已提交”附近的语法错误
- apache - 使用新域 apache 启用 https (certbot)