java 11编译错误:包存在于另一个模块中

1u4esq0p  于 2021-07-12  发布在  Java
关注(0)|答案(1)|浏览(1249)

我的项目里有一个班。包javax.swing中的这个类扩展了javax.swing.joptionpane,因为我想使用joptionpane的一些受保护的方法。
当编译器是jdk8时,它可以正常工作。我将jdk版本更新为11,然后出现编译错误:包“javax.swing”存在于另一个模块中:java.desktop。
我的ide是intellij idea。我打开了设置——构建、执行、部署——java编译器,并在“override compiler parameters pre module”中添加了一项。这个模块是我的项目。编译选项是

--patch-module java.desktop=src -d mypatches/java.desktop/src/java.desktop/javax/swing/Top.java

但它不起作用。
我的项目树是'greatproject/src/javax/swing/top.java'。
“src-d”是什么意思?
正确的“补丁模块”是什么?

sirbozc5

sirbozc51#

从Java9版本开始,添加了对jigsaw项目的完全支持,以确保项目的模块化。如果包中存在相同的名称,则此系统可能会在编译过程中导致问题。
请检查这个关于模块修补过程的主题,以适应您的module for javax.swing包。
此外,您可以尝试使用反射api从“joptionpane”类获取元素。

相关问题