передача свойств Java в Scala - ошибки nosuchmethod

1

Я пытаюсь скомпилировать образец кода с сайта Kafka. Это дает ошибки времени выполнения, когда scala пытается прочитать свойства java.

Ошибка:

Exception in thread "main" java.lang.NoSuchMethodError: scala.Predef$.augmentString(Ljava/lang/String;)Ljava/lang/String;
at kafka.utils.VerifiableProperties.getShortInRange(VerifiableProperties.scala:83)
at kafka.utils.VerifiableProperties.getShort(VerifiableProperties.scala:59)
at kafka.producer.SyncProducerConfigShared$class.$init$(SyncProducerConfig.scala:49)
at kafka.producer.ProducerConfig.<init>(ProducerConfig.scala:51)
at kafka.producer.ProducerConfig.<init>(ProducerConfig.scala:56)
at Test_Producer.main(Test_Producer.java:28)

Ниже приведено описание кода. Ошибка исходит из new ProducerConfig(props) утверждения new ProducerConfig(props) (строка 28 выше).

Properties props = new Properties();

props.put("metadata.broker.list", "broker1:9092,broker2:9092");
props.put("serializer.class", "kafka.serializer.StringEncoder");
props.put("partitioner.class", "example.producer.SimplePartitioner");
props.put("request.required.acks", "1");

ProducerConfig config = new ProducerConfig(props);

Я попытался войти в код, о котором идет речь, и кажется, что все соответствующие значения установлены (IE getProperties находит значение).

Код работает нормально, но, возможно, я использую неправильную библиотеку?

Предложения?


Редактировать:

Код запускается (или предполагается) в Intellij 14.

Java - 1,8 библиотеки Scala - 2.11.6


Другая точка данных: если я прокомментирую все свойства, кроме первого ("broker1: 9092..."), я получаю эту ошибку:

Exception in thread "main" java.lang.NoSuchMethodError: scala.Predef$.augmentString(Ljava/lang/String;)Ljava/lang/String;
at kafka.producer.ProducerConfig.liftedTree1$1(ProducerConfig.scala:83)
at kafka.producer.ProducerConfig.<init>(ProducerConfig.scala:82)
at kafka.producer.ProducerConfig.<init>(ProducerConfig.scala:56)
at Test_Producer.main(Test_Producer.java:28)  

Похоже - но не совсем то же самое. Все еще заставляет меня думать о проблеме с библиотекой.

  • 0
    Проблема с classpath? Как вы запускаете свой код?
  • 0
    Разве Kafka не является проектом Scala? Была ли версия Kafka, которую вы используете, также скомпилирована для Scala 2.11? Это выглядит как несоответствие версии библиотеки Scala (как это )
Показать ещё 1 комментарий
Теги:
properties

1 ответ

1

Обнаружена эта проблема с ниже зависимостью от kafka POM:

<dependency>
    <groupId>org.apache.kafka</groupId>
    <artifactId>kafka_2.9.2</artifactId>
    <version>0.8.2.0</version>
    <scope>compile</scope>
</dependency>

Стек ошибок:

Exception in thread "main" java.lang.NoSuchMethodError: scala.Predef$.augmentString(Ljava/lang/String;)Lscala/collection/immutable/StringOps;
    at kafka.utils.VerifiableProperties.getShortInRange(VerifiableProperties.scala:85)
    at kafka.producer.SyncProducerConfigShared$class.$init$(SyncProducerConfig.scala:53)
    at kafka.producer.ProducerConfig.<init>(ProducerConfig.scala:51)
    at kafka.producer.ProducerConfig.<init>(ProducerConfig.scala:56)
    at dominus.intg.jms.kafka.KafkaProducer.main(KafkaProducer.java:38)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:606)
    at com.intellij.rt.execution.application.AppMain.main(AppMain.java:140)

Обновите до 0.8.2.1, этот вопрос пропал.

<dependency>
   <groupId>org.apache.kafka</groupId>
   <artifactId>kafka_2.10</artifactId>
   <version>0.8.2.1</version>
   <scope>compile</scope>
</dependency>

Ещё вопросы

Сообщество Overcoder
Наверх
Меню