java - 当我尝试构建 MatJuice 时出现 2 个编译错误(找不到符号和不兼容的类型)

标签 java

我刚刚找到这个工具,MatJuice ,这可以节省我几天甚至几周的开发时间,但它无法编译。

虽然我对Java一无所知,但它看起来并不那么毛茸茸:两个错误都位于同一个文件、同一个函数中,而且功能看起来很通用(findParent),所以可能是Java程序员会立即知道它是关于什么的。

已发布一个重大问题 here一年多前,作者似乎不愿意纠正它。这就是我在这里问的原因。

以下是两个错误:

[javac] /home/geoffrey/mclab-core/languages/Natlab/src/natlab/utils/NodeFinder.java:62: error: cannot find symbol
[javac]         .filter(n -> clazz.isInstance(n) || n.getParent() == null)
[javac]                                              ^
[javac]   symbol:   method getParent()
[javac]   location: variable n of type Object

[javac] /home/geoffrey/mclab-core/languages/Natlab/src/natlab/utils/NodeFinder.java:66: error: incompatible types: Object cannot be converted to T
[javac]         .orElse(null);
[javac]                ^
[javac]   where T is a type-variable:
[javac]     T extends Object declared in method <T>findParent(Class<T>,ASTNode<?>)

波纹管是相关的代码段(错误发生在本摘录的第 3 行和第 7 行)

public static <T> T findParent(Class<T> clazz, ASTNode<?> node) {
  return Stream.iterate(node, ASTNode::getParent)
      .filter(n -> clazz.isInstance(n) || n.getParent() == null)
      .findFirst()
      .filter(clazz::isInstance)
      .map(clazz::cast)
      .orElse(null);
}

完整文件为here (文件中有有用的注释)以及存储库的其余部分。

我尝试自己尝试一下,但由于对 Java 的了解为零,它对我来说太抽象了,无法调试。

最佳答案

这些错误的出现是因为编译器不知道ast.ASTNode是什么。项目中没有这样的类。但是 ant 构建文件中有 Natlab.gen 目标:

mclab-core/languages/Natlab/build.xml

尝试运行Natlab.gen目标,目录gen(包含必要的包ast.ASTNode)将在内生成>Natlab 目录。这应该可以修复编译错误。

关于java - 当我尝试构建 MatJuice 时出现 2 个编译错误(找不到符号和不兼容的类型),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54991781/

相关文章:

java - 从 double 中删除小数点后的尾随零

java - DecimalFormat 给出的货币符号看起来无效

java - 如何创建一个包含某个类的任何子级列表的类?

java - 加载相对于正在执行的 jar 文件的文件

java - 反编译 JVM 语言

java - NineOldAndroids 动画不适用于 API > 10

Java延迟加载异常

java - Hashmap jdk1.7无锁get()和同步put()的线程安全

java - 如何通过在java中选择打印机选项使用按钮打印页面

java - 为什么Java程序的执行时间比C语言中的相同程序要长?