问题概述
正在开发类似lombok的编译时注解处理器程序,但由于jdk9+模块化的问题,某些类未导出给未命名模块,导致出现以下类似问题,在此寻求解决方案。
class com.wenqiuhan.tool.enhanno.application.Application (in unnamed module @0x4190bc8a)
cannot access class com.sun.tools.javac.api.JavacTrees (in module jdk.compiler)
because module jdk.compiler does not export com.sun.tools.javac.api to unnamed module @0x4190bc8a
我的环境
jdk17 + gradle(kotlin-dsl)
项目:
wen-tool-enhanno-annotation 存放注解
wen-tool-enhanno-processor 存放注解处理程序

探索解决之路
首先在没有任何配置时,相关类直接爆红

根据IDEA提示结合网上搜索进行如下配置,解决了爆红的问题

效果:

执行wen-tool-processor模块的build命令,提示以下错误:

仍旧是经过一番搜索,得到以下解决方案成功build:

本项目中的模块使用
本项目中的模块依赖该注解处理器,成功进行build

其他项目使用该注解处理器
将注解处理器和注解模块发布为maven到本地maven仓库后,在其他模块引入,仍旧提示cannot access class com.sun.tools问题
maven项目

gradle项目

又经过一番搜索,得到如下解决方案
maven项目

gradle项目

最后
有没有能够在processor项目就能解决这个问题的方案?或是写IDEA插件能否解决?
在引入processor模块时添加一些配置是能解决,但是终归是不太友好的方式,最好是在我这边就能处理而不是让使用者去添加一些额外配置。
(因为编译时注解处理器会在编译时增加字段或方法,所以会写相关的IDEA插件使IDEA识别。如果插件某些功能可以解决这个问题,也可以写插件,但是没有相关思路,有知道的同学可以告诉一下)