Java 未找到适用于实际参数的构造函数/方法”;int";但匹配的候选人确实存在

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”。但是,当我运行查

我想在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仍然对此抱怨

我的员工示例非常简单:

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
修饰符声明构造函数。

我尝试了所有不同类型的员工构造函数,但都失败了……非常感谢!这就是问题所在。