解决了,在创建变量的时候直接传入pluginloader的classloader即可,代码如下
//变量在插件主类中创建
Reflections reflector=new Reflections("包名路径",getLoader().getClassLoaders().toArray());
解决了,在创建变量的时候直接传入pluginloader的classloader即可,代码如下
//变量在插件主类中创建
Reflections reflector=new Reflections("包名路径",getLoader().getClassLoaders().toArray());
工程是idea里mirai console插件里自带的java工程模板
jdk版本:openjdk 17
问题代码:
Class CommandMap{
public CommandMap(boolean scan) {
if (scan) this.scan();
}
private void scan() {
Reflections reflector = new Reflections("com.example");
Set<Class<?>> classes = reflector.getTypesAnnotatedWith(Command.class);
}
}
调用(测试)均通过以下方式调用:
CommandMap cm=new CommandMap(true);
问题描述:使用项目模板自带的运行配置运行,reflections框架无法扫描到带有对应注解的类,使用junit运行测试代码可以扫描到对应的类。
直接运行代码,classes的size为0,没有扫描到类
使用junit运行测试代码,classes的size为1,成功扫描到了一个类