【问题标题】:The import java.awt cannot be resolved导入 java.awt 无法解析
【发布时间】:2021-05-07 02:12:25
【问题描述】:

我已经在装有 macOS 10.13.5 的 MacBookPro 上安装了 Eclipse [版本:Photon Release (4.8.0)] 和 JDK 10 当我写我的代码时:import java.awt.*;

我得到错误:

导入 java.awt 无法解析

java.awt 是否包含在 JDK 10 中?如果是,在哪里以及如何使 Eclipse 可见?如果没有,我该如何添加 java.awt?

【问题讨论】:

  • 您是否添加了您的项目需要 awt 的模块?
  • 从 Java 9 开始,Java 是模块化的。 awt 在 Java 应用程序中 99% 无用,因此在默认情况下不加载的单独模块 (java.desktop) 中。你必须明确告诉 Java 包含这个模块。
  • 我认为java.awt包含在JDK10中,所以我只在我的代码中添加了这一行:import java.awt.*。如何告诉 JDK 包含 java.awt ?
  • @Livio 它包含在 JDK10 中,但在启动 JVM 时不会加载或被编译器看到,除非您明确要求它。这就是找不到这个包的原因。
  • @Livio 你使用模块吗?如果是,则必须在 modules.java 中声明 requires java.desktop;

标签: java awt java-10


【解决方案1】:

java.awt 是否包含在 JDK 10 中?

是的,这个包确实存在。 The Java10 API docs 也同样确认。

如果是,我在哪里以及如何使 Eclipse 可见?

在模块化代码中,您需要做的就是通过在模块描述符文件 (module-info.java) 中声明对它的依赖来对 resolve the java.desktop module 进行依赖。即

requires java.desktop;

【讨论】:

  • 我希望 Eclipse 的“快速修复”在这里能有所帮助...谢谢!
【解决方案2】:

基本上,只需将这个 ma​​ven 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

其他常见的JDK10+缺失模块,请参考:

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

【讨论】:

    猜你喜欢
    • 2012-11-22
    • 2018-08-15
    • 1970-01-01
    • 2012-04-04
    • 2013-10-04
    • 1970-01-01
    • 2016-03-12
    • 2018-08-07
    • 2012-11-06
    相关资源
    最近更新 更多