Eclipse可以毫无问题地编译以下代码,而mvn
尝试编译此代码时,将导致编译失败:
try {
// Distribution.rep().get(id) returns a java.util.Optional
Distribution updated = Distribution.rep().transact(() -> {
Distribution distro = Distribution.rep().get(id).orElseThrow(() -> {
throw new NotFoundException("Couldn't find Distribution with ID '%s'.", id);
});
// Other stuff...
});
rs.setData(updated);
} catch (ExecutionException e) {
// Handle the error
} catch (Exception e) {
// Handle the exception
}
maven-compiler-plugin:3.1
引发的错误是:
unreported exception java.lang.Throwable; must be caught or declared to be thrown
NotFoundException extends RuntimeException
。 transact
方法将所有运行时(?)异常包装在ExecutionException
中,然后再引发它们。无论哪种方式,NotFoundException
(抛出时)都应该被catch
的{{1}}子句捕获,那么出了什么问题?
据我了解,ExecutionException
似乎认为maven-compiler-plugin
是NotFoundException
。 Throwable
是在我的代码(项目)中定义的,因此NotFoundException
应该了解一下...
编译器插件的源和目标定义为maven-compiler-plugin
。具有Java版本1.8
。尝试使用1.8.0_181
版maven-compiler-plugin
,得到相同的结果。