Java Gradle项目中无法使用自定义Manifold扩展方法问题求助
问题解决方案
导致编译找不到echo()方法的核心原因是当前Gradle配置缺失Manifold扩展功能所需的注解处理器声明,以及Java 11模块化环境下的编译适配参数。
具体修复步骤
- 补充Manifold扩展模块的注解处理器依赖,版本与已引入的
manifold-science保持一致 - 新增Java 11编译参数,开放JDK内部API权限供Manifold调用
- 统一Lombok依赖版本,避免多版本冲突
- 清理构建缓存后重新编译
修改后完整build.gradle配置
plugins { id 'java' } sourceCompatibility = JavaVersion.VERSION_11 targetCompatibility = JavaVersion.VERSION_11 repositories { maven { url 'https://oss.sonatype.org/content/repositories/snapshots/' } } // Java 11 适配Manifold所需的编译参数 compileJava { options.compilerArgs += [ '--add-exports', 'jdk.compiler/com.sun.tools.javac.code=ALL-UNNAMED', '--add-exports', 'jdk.compiler/com.sun.tools.javac.comp=ALL-UNNAMED', '--add-exports', 'jdk.compiler/com.sun.tools.javac.file=ALL-UNNAMED', '--add-exports', 'jdk.compiler/com.sun.tools.javac.main=ALL-UNNAMED', '--add-exports', 'jdk.compiler/com.sun.tools.javac.parser=ALL-UNNAMED', '--add-exports', 'jdk.compiler/com.sun.tools.javac.processing=ALL-UNNAMED', '--add-exports', 'jdk.compiler/com.sun.tools.javac.tree=ALL-UNNAMED', '--add-exports', 'jdk.compiler/com.sun.tools.javac.util=ALL-UNNAMED', '--add-opens', 'jdk.compiler/com.sun.tools.javac.code=ALL-UNNAMED', '--add-opens', 'java.base/java.lang=ALL-UNNAMED' ] } dependencies { // 统一Lombok版本为1.18.20 implementation "io.vavr:vavr:0.10.3" compileOnly 'org.projectlombok:lombok:1.18.20' annotationProcessor 'org.projectlombok:lombok:1.18.20' // 新增Manifold扩展注解处理器依赖 annotationProcessor 'systems.manifold:manifold-ext:2021.1.25-SNAPSHOT' implementation 'systems.manifold:manifold-science:2021.1.25-SNAPSHOT' testCompileOnly 'org.projectlombok:lombok:1.18.20' testAnnotationProcessor 'org.projectlombok:lombok:1.18.20' testAnnotationProcessor 'org.openjdk.jmh:jmh-generator-annprocess' testImplementation 'org.junit.jupiter:junit-jupiter-engine' } test { useJUnitPlatform() testLogging { events "passed", "skipped", "failed" } }
配置修改完成后执行./gradlew clean build清理缓存并重新构建,即可正常编译运行"hello".echo()调用。
内容的提问来源于stack exchange,提问作者Alexei
相关产品推荐
相关产品推荐

