这个问题类似于this one。我试图从Rascal调用Java方法,但我收到一个错误(这次是另一个错误):
Cannot link method com.mypackage.Teste because: com.mypackage.Teste.<init>(io.usethesource.vallang.IValueFactory)
。
捣蛋鬼代码:
@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插件。
因此,总结一下讨论,这个错误的可能原因包括:
public ClassName(IValueFactory vf) { this.vf = vf; }
<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>