最近看著名的《java8 in action》,发现在github上有提供书中源码,于是兴冲冲的将源代码导入到了idea,准备撸一把,结果导入完成之后,竟然有文件直接报错:
Idea错误提示:
Non-static method cannot be referenced froma static context Cannot resolve method 'flatMapping(<lambda expression>, java.util.stream.Collector<T,capture<?>,java.util.Set<T>>)'运行之后java compiler (javac)报错:
我感觉应该是jdk版本问题,下载源码的时候确实没有看版本要求,我电脑上的是1.8.0_162的,可能低了,就又进github放java8源码的网页看了一下:
github上要求的版本这样就不对了,我的jdk版本比要求的还要高一些,不应该不兼容上面提供的“1.8.0_05-b13”的。想到这本书的序言里面还留了作者在线,我就又去上面搜了一下,看有没有人遇到类似的问题,果然这次有结果:
manning上关于源码编译错误的解释MMP,原来是作者上传源码的时候忘记更新github上的jdk环境要求了。原来收集器中的flatMapping还有filtering在jdk8还没有提供能,怪不得报“Cannot resolve method 'flatMapping(<lambda expression>, java.util.stream.Collector<T,capture<?>,java.util.Set<T>>)';还有找不到符号”这些错误。至于“Non-static method cannot be referenced froma static context”这个错误提示是idea提供的:The error message is misleading due to implementation of method reference resolution in IntelliJ IDEA。我安装了jdk9,配置到idea,这些错误消失,运行也正常,终于可以开心的大干一场了。
网友评论