应用启动报错
使用IntelliJ IDEA社区版在本地启动某个sofa boot项目时报如下错误
java: java.lang.IllegalArgumentException
java: The class java.lang.IllegalArgumentException may be caused by the wrapped ProcessingEnvironment object.
Please pass the wrapped ProcessingEnvironment further to super.init().
If you need to access the original ProcessingEnvironment object (e.g. for creating com.sun.source.util.Trees.instance(ProcessingEnvironment)), you may use following code in the processor implementation:
ProcessingEnvironment unwrappedprocessingEnv = jbUnwrap(ProcessingEnvironment.class, processingEnv);
where
private static <T> T jbUnwrap(Class<? extends T> iface, T wrapper) {
T unwrapped = null;
try {
final Class<?> apiWrappers = wrapper.getClass().getClassLoader().loadClass("org.jetbrains.jps.javac.APIWrappers");
final Method unwrapMethod = apiWrappers.getDeclaredMethod("unwrap", Class.class, Object.class);
unwrapped = iface.cast(unwrapMethod.invoke(null, iface, wrapper));
}
catch (Throwable ignored) {}
return unwrapped != null? unwrapped : wrapper;
}
仔细查看报错,idea提示了解决的方法:
java: Workaround: to make project compile with the current annotation processor implementation, start JPS with VM option: -Djps.track.ap.dependencies=false
When run from IDE, the option can be set in "Compiler Settings | build process VM options"
如图可以设置为-Djps.track.ap.dependencies=false
解决该问题后出现另一个报错,提示项目的某些properties为null。
解决方法:将IntelliJ IDEA社区版更换成了专业版,能够自动识别出spring boot项目并成功在本地启动项目。