Почему класс Scala в зависимости от универсального класса Java не работает с NoSuchMethodError в spark? - PullRequest
0 голосов
/ 29 июня 2018
  • ПРИМЕЧАНИЕ: я упростил мой код ниже, чтобы избежать ненужной путаницы.

У меня есть фильтр черт scala ниже:

trait Filter[T] extends Serializable {
    def evaluate(input: T): Boolean
}

Я использую его в классе для фильтрации СДР специального типа:

class OtherThing(filter: Filter[String], tokens: RDD[String]){
    tokens.filter(t => {filter.evaluate(t)})
}

Это работает, однако, как только я заменяю черту scala интерфейсом java, я получаю NoSuchMethodError. Мой интерфейс Java выглядит так:

public interface Filter<T>  extends Serializable {
    scala.Boolean evaluate(T input);
}

И ошибка жалуется на то, что не существует метода для фильтрации объекта. Сообщение об ошибке выглядит так:

Причина: java.lang.NoSuchMethodError: my.package.Filter.evaluate (Ljava / lang / Object;) Z

...