Ошибки при компиляции сгенерированных Apache Thrift Java-классов, которые реализуют абстрактный класс - PullRequest
1 голос
/ 03 марта 2012

Моя группа пытается построить сервер, используя Apache Thrift, но у нас странные проблемы с компиляцией.В сгенерированных файлах Java из Thrift присутствуют следующие строки:

  public static class Client extends shared.BasicServer.Client implements org.apache.thrift.TServiceClient, Iface {
  public static class Factory implements org.apache.thrift.TServiceClientFactory<Client> {

Они определены как внутренние классы.Когда я пытаюсь построить проект в Eclipse, он фактически создает файлы .class и программа запускается, но Eclipse по-прежнему говорит, что существуют различные ошибки, связанные с этими строками, включая следующие:

Несоответствие привязки: Тип Backend.Client не является допустимой заменой ограниченного параметра типа TServiceClientFactory Backend.java / server / src / thrift line 42 Проблема Java

Тип TServiceClient не может быть суперинтерфейсом клиента;Суперинтерфейс должен быть интерфейсом Backend.java / server / src / thrift line 41 Проблема Java

Я считаю, что это потому, что org.apache.thrift.TServiceClient на самом деле является абстрактным классом, а не интерфейсом,и все же клиент пытается реализовать это.Однако, как я уже говорил, программа компилируется и работает, и я не совсем понимаю, как.

Кто-нибудь знает, как избавиться от этих ошибок?У меня есть ощущение, что есть какая-то простая опция, которую я должен передать своей конфигурации сборки.

Ответы [ 2 ]

3 голосов
/ 07 апреля 2012

Я столкнулся с такой же проблемой в Eclipse, как и IntelliJ.

Я обнаружил, что thrift-версии между thrift-компилятором и lib-thrift не синхронизировались.

IУ меня была версия 0.6.0 Thrift (из $ sudo port install thrift), которую я использовал для генерации Java-кода, и я использовал lib-thrift-0.8.0.jar

Для установки я следовал следующим инструкциям Экономия от источника, для моей платформы , а затем заново сгенерированный и обновленный мой сгенерированный Java-код экономии, и эти ошибки были устранены.

1 голос
/ 29 августа 2012

генерируется maven:

<dependency>
    <groupId>org.apache.thrift</groupId>
    <artifactId>libthrift</artifactId>
    <version>0.8.0</version>
    <type>pom</type>
</dependency>

Просто удалите элемент: type, затем перестройте его.

<dependency>
    <groupId>org.apache.thrift</groupId>
    <artifactId>libthrift</artifactId>
    <version>0.8.0</version>
</dependency>
...