java报错-->java.lang.IllegalAccessError

1、前言

  在gradle中运行main方法突然出现如下错误

Exception in thread "main" java.lang.IllegalAccessError: class XXX.util.ImageBorderUtils (in unnamed module @0x4bd4bcd4) cannot access class sun.font.FontDesignMetrics (in module java.desktop) because module java.desktop does not export sun.font to unnamed module @0x4bd4bcd4
	at XXX.util.ImageBorderUtils.main(ImageBorderUtils.java:51)

看报错是资源访问不了,因为用了jdk9之后的jdk版本,会有访问问题,但是我写main方法又不是模块,知道要加jvm参数,但我用的gradle,就很迷茫,怎么设置参数。

2、环境

JDK:17
依赖管理工具:gradle
IDE:IDEA 2023.1.1

3、解决过程

在main方法上,点击Modify Run Configuration
java报错-->java.lang.IllegalAccessError_第1张图片
点击Modify options
java报错-->java.lang.IllegalAccessError_第2张图片
勾选Add VM options
java报错-->java.lang.IllegalAccessError_第3张图片
增加参数:–add-exports java.desktop/sun.font=ALL-UNNAMED
java报错-->java.lang.IllegalAccessError_第4张图片
将导包有问题的包,暴露为全部未命名模块的可访问(这里是翻译参数意思)。
最后点确定,应用配置,回去点运行即可,正常运行。

4、设置界面的模块表达

  这里主要解释一下idea表达当前是模块的一些说明。
他有一个no module的选项,虽然有,但是选择,下面的实现类变红,所以这个必选的。必须选一个模块module
java报错-->java.lang.IllegalAccessError_第5张图片
前一个jdk版本,则默认选中模块声明的jdk
java报错-->java.lang.IllegalAccessError_第6张图片
这种情况可能是我项目问题,我项目是个多模块的项目。

参考博客:
jdk11中获取Font类字体宽度
idea jdk8编译报错 Error:java: 无效的标记: --add-exports

你可能感兴趣的:(java,java)