org.reflections不会从jar文件中加载标有注释的内部类

时间:2017-06-30 08:40:56

标签: java eclipse jar

当试图在jar文件中加载带有注释的类方法(它们都在同一个文件中)时,eclipse中的java将加载所需的类并使用注释运行所有方法。但是,当我将项目导出为jar时,它将不会加载带注释的方法。我正在使用org.reflections和jdk1.8.0_131(由于某些方法的问题,未使用Maven)。 加载方法的代码:

Wrapper.out.println("Checking for boot tasks.");
    Data.setLoad_stage(61);
    Reflections reflections = new Reflections(new ConfigurationBuilder().setUrls(ClasspathHelper.forPackage("app")).setScanners(new MethodAnnotationsScanner()));
    Data.setLoad_stage(62);
    Set<Method> methods = reflections.getMethodsAnnotatedWith(InitializationEvent.class);
    Data.setLoad_stage(63);
    for(Method m : methods) {
        Data.setLoad_stage(64);
        try {
            Wrapper.out.println("Running " + m.getDeclaringClass().getName() + "." + m.getName() + " : " + Integer.toHexString(m.hashCode()));
            Data.setLoad_stage(65);
            m.invoke(null);
            Data.setLoad_stage(66);
        } catch (IllegalAccessException e1) {
            Data.setLoad_stage(67);
            e1.printStackTrace();
            Data.setLoad_stage(68);
        } catch (IllegalArgumentException e1) {
            Data.setLoad_stage(69);
            e1.printStackTrace();
            Data.setLoad_stage(70);
        } catch (InvocationTargetException e1) {
            Data.setLoad_stage(71);
            e1.printStackTrace();
            Data.setLoad_stage(72);
        }
    }

InitializationEvent:

@Retention(RUNTIME)

@Target(METHOD) public @interface InitializationEvent {

}

setLoad_stage - 更改加载栏的值。

0 个答案:

没有答案