导入 java.awt 无法解析。

18

我已经在macOS 10.13.5上的MacBookPro上安装了Eclipse [版本:Photon Release(4.8.0)]和JDK 10。当我在代码中写入:import java.awt.*;时,出现以下错误:

无法解析import java.awt

java.awt是否包含在JDK 10中?如果是,在哪里?如何让Eclipse看到它呢?如果不是,该怎么添加java.awt?


4
你是否已经添加了AWT模块到你的项目中? - Luiggi Mendoza
5
从Java 9开始,Java被模块化了。在Java应用程序中,awt几乎无用,因此它在一个单独的模块(java.desktop)中,该模块不会默认加载。您必须显式告诉Java包括这个模块。 - Arnaud Denoyelle
1
@Livio 它已经包含在JDK10中,但是除非您明确要求,否则它不会在启动JVM时加载或被编译器看到。这就是为什么找不到该软件包的原因。 - Arnaud Denoyelle
@Livio 我不知道(这就是为什么我没有发布答案)。但我认为这个链接是一个很好的开始:http://www.baeldung.com/java-9-modularity - Arnaud Denoyelle
2
@Livio 你使用模块吗?如果是的话,你必须在你的 modules.java 中声明 requires java.desktop; - Lino
显示剩余3条评论
2个回答

51
“java.awt”包在JDK 10中是否包含?
是的,该包确实存在。Java10 API文档也证实了这一点。
如果是,那么它在哪里?如何使其在Eclipse中可见?
在模块化代码中,你所需要做的就是在模块描述符文件(module-info.java)中声明对“java.desktop”模块的依赖,即解决java.desktop模块
requires java.desktop;

2
我希望Eclipse的“快速修复”能在这里帮上忙...谢谢! - Pheelbert
嗨,@Naman,请您详细说明应该放在哪里? - axita.savani

3

基本上,只需将此 maven build compiler plugin 片段添加到您的主项目 Maven POM.xml 中,
以指定必须添加哪些 JDK9+ 模块以用于 javac 编译。

  <?xml version="1.0" encoding="UTF-8"?>
  <project xmlns="http://maven.apache.org/POM/4.0.0" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    
    ...
    
    <properties>
        <java.version>11</java.version>
        ...
    </properties>

    ...

    <build>
        <plugins>
             <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.8.1</version>
                <configuration>
                    <source>${java.version}</source>
                    <target>${java.version}</target>

                    <!-- JDK9+ Add Module MAGIC happens below...          -->
                    <!-- Add implicit default JDK9+ java.se explicitly    -->
                    <!-- Add explicit java.desktop for import java.awt.*; -->
                    <compilerArgs>
                        <arg>--add-modules</arg>
                        <arg>java.se,java.desktop</arg>
                    </compilerArgs>
                </configuration>
            </plugin>
        </plugins>
    </build>

  </project>

如此解释:

https://www.baeldung.com/java-9-modularity

对于其他常见的缺失JDK 10+模块,请参考:

http://cr.openjdk.java.net/~iris/se/10/pfd/java-se-10-pfd-spec-01/api/overview-summary.html


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接