先放图:
首先看报错内容:
Exception in thread "main" java.lang.Error: Unresolved compilation problem:
at Java504/Tuxinghua.njj1.main(njj1.java:17)
这让我一直以为是main里面的问题,检查了几遍一直找不到错误。
通过查阅资料发现:
在 Java 9 及更高版本中,如果使用了模块化系统(即,包含 module-info.java
文件的项目),那么需要在模块定义中声明对其他模块的依赖关系。
这是一种确保正确解析依赖关系并提高代码封装性的方式。所以,在这种情况下,需要添加 requires java.desktop
语句。
requires java.desktop
语句表示您的模块(Java504
)依赖于 java.desktop
模块。
java.desktop
模块是 Java 标准库的一部分,它包含了很多与图形用户界面(GUI)、图形绘制和图像处理相关的类。在您的代码中,您使用了 java.awt
包,它是 java.desktop
模块的一部分。
通俗地说,通过在 module-info.java
文件中添加 requires java.desktop
,您告诉 Java 编译器和运行时环境您的项目需要使用 java.desktop
模块中的类,以便正确地编译和运行您的代码。
module Java504 {
requires java.desktop;
}
module-info.java
文件用于定义 Java 9 及更高版本引入的模块化系统的模块配置。在这个文件中,您可以声明模块的名称、依赖关系和其他属性。
But:
如果您的项目不使用 Java 的模块化系统(即,没有 module-info.java
文件),您仍然可以在 Java 9 及更高版本中运行您的代码。在这种情况下,您的项目将被视为未命名模块,它可以访问所有已导出的模块,包括 java.desktop
。因此,您不需要显式地添加 requires java.desktop
语句。
请注意,如果您使用的是 Java 8 或更早版本,模块化系统尚不存在,因此您不需要担心模块依赖关系。在这些版本中,只要正确导入所需的包(例如 import java.awt.*
),您的代码应该可以正常编译和运行。
通过修改,成功显示出了图形化界面: