我正在努力处理包含一些 Stream API 方法的评估表达式。 示例:
sample.reads.stream().filter(s -> s.l.length() < 10)
这也行不通:
sample.reads.stream().filter(s -> s.l.length() < 10).collect(Collectors.toList())
给出:
但是,sample.reads.stream().count()
或 sample.reads.stream().toArray()
与任何其他表达式一样工作正常(如果我将流 API 调用放入代码中,它也可以正常工作)
配置: java : jdk1.8.0_144
想法: IntelliJ IDEA 2017.3.1(社区版) 构建 #IC-173.3942.27,构建于 2017 年 12 月 11 日 JRE:1.8.0_152-release-1024-b8 amd64 JVM:JetBrains s.r.o 的 OpenJDK 64 位服务器 VM Windows 10 10.0
更新
抱歉,混淆了。甚至终端命令也不起作用。我展示这个例子是因为我发现 examption 是在 filter 方法上抛出的,而不是在 collect 上。如果我添加 .collect() 我会看到同样的错误
更新 2 我不认为这与类(class)有关。即使这给了我同样的错误:
IntStream.range(0, 100).filter(i -> i%2 == 0).toArray()
最佳答案
这是一个猜测,但问题似乎是与类路径相关的问题。因此,您会收到无法找到特定包的消息。
我不认为这是由于终端或非终端流操作造成的。即使是非终端操作也可以在 IDEA 中无错地评估。看这个:
我强烈建议检查 IDEA 中的运行/调试配置,并检查该应用程序正在使用哪个类路径。打开以下对话框并检查“使用模块的类路径”字段中的内容:
那里可能潜入了错误的值。
关于java - Intellij IDEA - 使用流 API 导致错误评估表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48233031/