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

我已经实现了自定义 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>如下:


//CommonGradlePlugin

import org.gradle.api.Plugin;

import org.gradle.api.Project; 


public class CommonGradlePlugin implements Plugin<Project> {

    //...

}


30秒到达战场
浏览 215回答 1
1回答

拉莫斯之舞

为什么类加载器看不到类型?我想 gradle 类不包含在编译/运行时类路径中,只是因为它是一个构建工具。这就是为什么反射无法找到 gradle 类的原因。您可以使用 Reflection 的 ConfigurationBuilder 排除带有 gradle 插件的包:ConfigurationBuilder configurationBuilder = new ConfigurationBuilder();FilterBuilder filterBuilder = new FilterBuilder();configurationBuilder.addUrls(ClasspathHelper.forPackage(PACKAGE_TO_SCAN));filterBuilder&nbsp; &nbsp; &nbsp; &nbsp; .includePackage(PACKAGE_TO_SCAN)&nbsp; &nbsp; &nbsp; &nbsp; .excludePackage(PACKAGE_TO_EXCLUDE);configurationBuilder.filterInputsBy(filterBuilder);Reflections reflections = new Reflections(configurationBuilder);
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java