当试图在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 - 更改加载栏的值。