Не найден применимый конструктор/метод для фактических параметров int, но соответствующий кандидат существует

Я хочу добавить некоторый код в код Java, сгенерированный Spark-SQL. Поэтому я создаю файл jar с классом «Сотрудник» и вручную вставляю «Сотрудник e = новый сотрудник (некоторое целое число)» в файл: sql/core/src/main/scala/org/apache/spark/sql/execution /WholeStageCodegenExec.scala. При вызове spark-shell я сделал «spark-shell --jars /path/to/myJar.jar». Однако, когда я запускаю запрос, он сообщает об этой ошибке: ОШИБКА CodeGenerator: не удалось скомпилировать: org.codehaus.commons.compiler.CompileException: файл 'generated.java', строка 21, столбец 18: не найден применимый конструктор/метод для фактические параметры "int"; кандидаты: «Сотрудник ()», «Сотрудник (int)», «Сотрудник (java.lang.String)»

Большинство подобных вопросов, которые я нашел в Интернете, связаны с несоответствием типа параметра, однако у меня есть конструктор Employee(int), как вы можете видеть здесь, почему Янино все еще жаловался на это ??

Пример моего сотрудника довольно прост:

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();

Очень ценю вашу помощь!!!


person BruceTerp    schedule 22.03.2019    source источник
comment
Я пытался использовать все виды конструкторов сотрудников, но все потерпели неудачу...   -  person BruceTerp    schedule 22.03.2019


Ответы (1)


Я не знаком с генератором кода Spark, но это одна проблема с кодом Java.

Все конструкторы класса Employee объявляются с помощью доступ по умолчанию, поэтому они недоступны из других пакетов. Попробуйте объявить конструктор с модификатором public.

person ilinykhma    schedule 23.03.2019
comment
Большое спасибо! Это проблема. - person BruceTerp; 25.03.2019