我有一些使用 Javaslang 的相当复杂的代码。如果我将它编译成一个 jar,它运行良好。但是,当我尝试在 Eclipse 中进入它进行调试时,Eclipse 将其标记为编译错误并在它到达该行时死亡。特别奇怪的部分是,这在一周前有效,并且代码在此期间没有更改。
我尝试过的事情:
- 清理项目(包括取消选中“自动构建”)
- 从 Eclipse 中删除项目,删除 .project 和 .settings,从头开始重新导入
- 从 Eclipse 中删除项目,删除 .project、.classpath、.settings,执行 mvn eclipse:eclipse,重新导入
Maven 构建这个没有错误[在 Eclipse 和命令行中]。我可以运行这个依赖的项目并让它从 JAR 中访问这个代码,所以我知道它可以工作。我只是不能让 Eclipse 在“运行”或“调试”模式下访问项目中的代码。
Seq<Tuple2<StateProbabilityVector, ScenData>> resultStateProbs =
futures.
flatMap(Future::get).
toList();
// Update the target counts.
// THIS ENTIRE STATEMENT IS THE ERROR
Seq<Tuple2<ScenState, Probability>> result =
resultStateProbs.flatMap(tuple -> tuple.apply((spv, baTargetCount) ->
{
return spv.getStateProbList().
peek(sp -> logger.debug("Checking if {} > {}: {}",
sp.getProbability(),
intermediateMinProb,
sp.getProbability().greaterThan(intermediateMinProb))).
filter(sp -> sp.getProbability().greaterThan(intermediateMinProb)).
map(sp -> updateScenarioData(sp, baTargetCount, dupStateInfo));
}));
// signature for updateScenarioData
protected abstract Tuple2<ScenState, Probability> updateScenarioData(StateProbability stateProb,
ScenData scenData,
DSI dupStateInfo);
// truncated def of StateProbabilityVector
@Getter @ToString @Builder
public class StateProbabilityVector {
@NonNull
private final Seq<StateProbability> stateProbList;
}
所以类型都是正确的,但 Eclipse 声称:
> Type mismatch: cannot convert from Object to Iterable<? extends
> Object>
> Type mismatch: cannot convert from Seq<Object> to
> Seq<Tuple2<ScenState,Probability>>