此问题与this one类似。我试图从Rascal调用Java方法,但我收到一个错误(这次是另一个错误):
Cannot link method com.mypackage.Teste because: com.mypackage.Teste.<init>(io.usethesource.vallang.IValueFactory)
。
Rascal代码:
@javaClass{com.mypackage.Teste}
java void testeJava();
Java代码:
package com.mypackage;
import io.usethesource.vallang.IValueFactory;
public class Teste {
private final IValueFactory vf;
public Teste(IValueFactory vf) {
this.vf = vf;
}
public void testeJava() {
System.out.println("it worked");
}
}
我注意到我正在使用旧的Rascal版本(0.8),正如this评论所指出的那样。我将其更改为0.9,但错误仍然存在。我正在使用Eclipse Rascal插件。
答案 0 :(得分:4)
因此,总结一下讨论,可能导致此错误的原因包括:
public ClassName(IValueFactory vf) { this.vf = vf; }
正如jurgenv所提到的,您的Eclipse项目还需要Rascal和Java性质,否则Java构建器不会运行。只要您使用 New→Rascal Project 创建它,就应该从一开始就正确设置。作为参考,Eclipse .project文件的natures部分应如下所示:
<natures>
<nature>rascal_eclipse.rascal_nature</nature>
<nature>org.eclipse.jdt.core.javanature</nature>
<nature>org.eclipse.pde.PluginNature</nature>
<nature>rascal_eclipse.term_nature</nature>
</natures>