When this error occurs Error:(1, 1) java: module JavaFX reads package java.awt from both java.desktop and java.datatransfer

When this error occurs Error:(1, 1) java: module JavaFX reads package java.awt from both java.desktop and java.datatransfer

项目名称-JavaFX

模块-info.java

module JavaFX {
requires javafx.fxml;
requires javafx.controls;
requires java.desktop;
opens sample;

}
Controller.java

package sample;

import javafx.fxml.FXML;

import java.awt.Desktop;
import java.io.IOException;
import java.net.URI;
import java.net.URISyntaxException;

public class Controller {

    @FXML
    public void handleClick(){
        try{
            Desktop.getDesktop().browse(new URI("http://www.javafx.com"));
        } catch (URISyntaxException | IOException e) {
            e.printStackTrace();
        }
    }

}

我得到的错误:错误:(1, 1) java:模块 JavaFX 从 java.desktop 和 java.datatransfer
中读取包 java.awt 如何解决这个问题?

刚遇到同样的问题。根据 This IDEA Support Thread,它可能有点像转移注意力的错误消息。看起来模块文件实际上是正确的(即使 intellij 带你到那里),但问题实际上是因为 IDEA 添加了一个编译器参数以及我们所做的所有 alt-enter(我们都这样做......)。

如果您导航至设置 -> 构建、执行、部署 -> 编译器 -> Java 编译器并查看底部,您将看到它已添加并 --exports of awt from datatransfer 到模块,如下图所示:

简单删除它,awt 只能从桌面读取。

我明白这个问题并不是对发生了什么的最深入的解释,所以如果有人想详细说明,我会很高兴。