我刚刚发现了该工具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的知识为零,对于我来说调试太抽象了。
答案 0 :(得分:1)
这些错误是由于编译器不知道ast.ASTNode
是什么而出现的。项目中没有此类。但是蚂蚁构建文件中有Natlab.gen
个目标:
mclab-core/languages/Natlab/build.xml
尝试运行Natlab.gen
目标,并将在gen
目录内生成目录ast.ASTNode
(包含必要的软件包Natlab
)。这应该可以修复编译错误。