Не найдено подходящего конструктора / метода для фактических параметров "int", но соответствующий кандидат существует - PullRequest
0 голосов
/ 22 марта 2019

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

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

Мой пример Employee довольно прост:

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

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

1 Ответ

1 голос
/ 23 марта 2019

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...