【发布时间】:2019-01-18 14:57:06
【问题描述】:
===更新:使用 org.reflections:reflections:0.9.11
希望使用以下行从 Kotlin 源中提取类名列表...
Reflections.getSubTypesOf(Any::class.java)
但是,当我运行以下脚本时,我收到一条消息说没有看到 Kotlin 类文件...
val classLoader = URLClassLoader(this.getDirectoryUrls(), null)
println("retrieved class loader")
val config = getConfig(classLoader)
println("retrieved source config")
val reflections = Reflections(config)
println("retrieved reflections")
// For 3 paths: Reflections took 3 ms to scan 3 urls, producing 0 keys and 0 values
=== 更新:“getDirectoryUrls()”添加的 3 个 url 是包含 kotlin 类源文件的目录。
以下是我的配置...想法?
private fun getConfig(classLoader: ClassLoader): ConfigurationBuilder {
val config = ConfigurationBuilder().setUrls(ClasspathHelper.forClassLoader(classLoader))
// .setScanners(SubTypesScanner(false), ResourcesScanner())
if (!packagePath.isNullOrBlank()){
System.out.println("looking in package [$packagePath]")
config.filterInputsBy(FilterBuilder().include(FilterBuilder.prefix(packagePath)))
}
config.addClassLoader(classLoader)
config.setScanners(SubTypesScanner(), TypeAnnotationsScanner())
return config
}
【问题讨论】:
-
您应该提及您使用的反射库。
getDirectoryUrls()返回什么? -
按要求添加详细信息。见上文...
标签: reflection jar kotlin classloader