Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/379.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在jar文件中列出包中的所有接口_Java_Jar_Classpath_Reflections - Fatal编程技术网

Java 在jar文件中列出包中的所有接口

Java 在jar文件中列出包中的所有接口,java,jar,classpath,reflections,Java,Jar,Classpath,Reflections,各位好! 我试图列出特定包中接口的所有类。 我遇到了多种解决方案,并尝试了以下方法: 使用反射: AllCommands = new ArrayList<ICommand>(); Reflections reflections = new Reflections(this.getClass().getPackage().getName()); commandClasses = reflections.getSubTypesOf(ICommand.class); for (Class&

各位好! 我试图列出特定包中接口的所有类。 我遇到了多种解决方案,并尝试了以下方法:

使用反射:

AllCommands = new ArrayList<ICommand>();
Reflections reflections = new Reflections(this.getClass().getPackage().getName());
commandClasses = reflections.getSubTypesOf(ICommand.class);
for (Class<? extends ICommand> c :commandClasses){
    AllCommands.add((ICommand)c.newInstance());
}
AllCommands=newarraylist();
反射反射=新反射(this.getClass().getPackage().getName());
commandClasses=reflections.getsubscriptsof(ICommand.class);

对于(Class我自己解决了。使用这个.getClass().getPackage().getName(),就像Packagename一样,只指向classes文件夹中的文件,引用jar中的类,我需要将“.”替换为“/”。谢谢。

?我该怎么做“我该怎么做?”做什么?你必须更具体一些,因为我不打算写教程。
AllCommands = new ArrayList<ICommand>();
ComponentScanner scanner = new ComponentScanner();
scanner.getClasses(new ComponentQuery() {
    @Override
    protected void query() {
        select().
        from(this.getClass().getPackage().getName()).
        andStore(thoseImplementing(ICommand.class).into(commandClasses)).
        returning(none());
    }
});
for (Class<? extends ICommand> c :commandClasses){
    AllCommands.add((ICommand)c.newInstance());
}