为了账号安全,请及时绑定邮箱和手机立即绑定

ReflectionsException:无法获取名称 org.gradle.api.Plugin

ReflectionsException:无法获取名称 org.gradle.api.Plugin

30秒到达战场 2022-05-25 16:43:58
我已经实现了自定义 Gradle 插件并且它可以工作,但是在 Gradle 构建期间我有一个ReflectionsException: Could not get the type for name org.gradle.api.Plugin因为反射扫描。为什么类加载器看不到类型?Caused by: java.lang.ClassNotFoundException: org.gradle.api.Plugin    at java.net.URLClassLoader.findClass(URLClassLoader.java:382)    at java.lang.ClassLoader.loadClass(ClassLoader.java:424)    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:349)    at java.lang.ClassLoader.loadClass(ClassLoader.java:357)    at org.reflections.ReflectionUtils.forName(ReflectionUtils.java:388)自定义插件实现Plugin<Project>如下://CommonGradlePluginimport org.gradle.api.Plugin;import org.gradle.api.Project; public class CommonGradlePlugin implements Plugin<Project> {    //...}
查看完整描述

1 回答

?
拉莫斯之舞

TA贡献1820条经验 获得超10个赞

为什么类加载器看不到类型?


我想 gradle 类不包含在编译/运行时类路径中,只是因为它是一个构建工具。这就是为什么反射无法找到 gradle 类的原因。


您可以使用 Reflection 的 ConfigurationBuilder 排除带有 gradle 插件的包:


ConfigurationBuilder configurationBuilder = new ConfigurationBuilder();

FilterBuilder filterBuilder = new FilterBuilder();


configurationBuilder.addUrls(ClasspathHelper.forPackage(PACKAGE_TO_SCAN));

filterBuilder

        .includePackage(PACKAGE_TO_SCAN)

        .excludePackage(PACKAGE_TO_EXCLUDE);

configurationBuilder.filterInputsBy(filterBuilder);


Reflections reflections = new Reflections(configurationBuilder);


查看完整回答
反对 回复 2022-05-25
  • 1 回答
  • 0 关注
  • 214 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信