Java 未找到适用于实际参数的构造函数/方法”;int";但匹配的候选人确实存在
我想在Spark SQL生成的java代码中添加一些代码。因此,我创建了一个jar文件,该文件有一个类“Employee”,并在文件中手动插入“Employee e=new Employee(某个整数)”:sql/core/src/main/scala/org/apache/spark/sql/execution/whisttagecodegenexec.scala。 调用spark shell时,我做了“spark shell--jars/path/to/myJar.jar”。但是,当我运行查询时,它会报告以下错误: 错误代码生成器:未能编译:org.codehaus.commons.compiler.CompileException:文件'generated.java',第21行,第18列:未找到实际参数“int”的适用构造函数/方法;候选项包括:“Employee()”、“Employee(int)”、“Employee(java.lang.String)” 我在网上发现的大多数类似问题都是因为参数类型不匹配,但是,正如您在这里看到的,我确实有Employee(int)构造函数,为什么Janino仍然对此抱怨 我的员工示例非常简单:Java 未找到适用于实际参数的构造函数/方法”;int";但匹配的候选人确实存在,java,apache-spark-sql,janino,Java,Apache Spark Sql,Janino,我想在Spark SQL生成的java代码中添加一些代码。因此,我创建了一个jar文件,该文件有一个类“Employee”,并在文件中手动插入“Employee e=new Employee(某个整数)”:sql/core/src/main/scala/org/apache/spark/sql/execution/whisttagecodegenexec.scala。 调用spark shell时,我做了“spark shell--jars/path/to/myJar.jar”。但是,当我运行查
public class Employee {
String name = "Default";
int age;
int ID;
Employee() {
System.out.println("Empty constructor");
}
Employee(String myName) {
name = myName;
}
Employee(int myAge) {
age = myAge;
}
void sayHi() {
System.out.println("Hello, I'm " + name);
}
void sayhello() {
System.out.println("Hello,test");
}
}
修改后生成的代码也很简单,如下所示:
public void init(int index, scala.collection.Iterator[] inputs) {
String name = "Go";
int age = 30;
Employee e1 = new Employee(age);
e1.sayHi();
非常感谢你的帮助 我不熟悉Spark codegen,但这是Java代码的一个问题
Employee类的所有构造函数都与一起递减,因此无法从其他包访问它们。尝试使用
public
修饰符声明构造函数。我尝试了所有不同类型的员工构造函数,但都失败了……非常感谢!这就是问题所在。