2012-03-03 40 views
1

我的組正在嘗試使用Apache Thrift構建服務器,但我們遇到了奇怪的編譯問題。在Thrift生成的Java文件中,存在以下行:編譯Apache的錯誤實現抽象類的Thrift生成的Java類

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類型不能是Client的超級接口;一個超接口必須是接口Backend.java /服務器/ src目錄/節儉線41的Java問題

我相信這是因爲org.apache.thrift.TServiceClient實際上是一個抽象類,而不是一個接口,但客戶端正試圖實施它。但是,正如我之前所說的,該程序編譯和工作,我真的不知道如何。

有沒有人有任何想法如何擺脫/抑制這些錯誤?我有一種感覺,我應該傳遞給我的構建配置一些簡單的選項。

回答

3

我遇到了同樣的問題在Eclipse中,以及IntelliJ。

我發現thrift編譯器和lib-thrift之間的節儉版本不同步。

我有0.6.0版本節儉的(從$ sudo的港口安裝節儉的),我用我的生成Java代碼,並使用LIB-節儉0.8.0.jar

我也跟着下面的說明安裝Thrift from source, for my platform,然後重新生成和更新我的java生成的節儉代碼,並解決了這些錯誤。

1

行家產生:

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

剛刪除的元素:類型,然後重建它。

<dependency> 
    <groupId>org.apache.thrift</groupId> 
    <artifactId>libthrift</artifactId> 
    <version>0.8.0</version> 
</dependency> 
相關問題