2014-04-18 107 views
1

我正在測試Apache Thrift學習的簡單程度,它看起來很有前途。一個主要問題:第一個教程不起作用...Windows和Apache Thrift可執行文件

我有Windows 7,Python 2.7,並得到了Thrift .exe for Windows v.0.9.1。我寧願不從源代碼編譯,因爲我不使用Cygwin等。該exe文件給出了下面描述的問題。所以我繼續前進,並嘗試使用Chocolatey來安裝Thrift,使用 cinst Thrift ,它工作正常,給了我Thrift v0.9.0。但是這個版本會導致與exe相同的行爲,如下所述。

當我運行在http://thrift.apache.org/tutorial/py發現我碰到下面的教程:

C:\Users\Me\Desktop\Thrift>thrift -r --gen py tutorial.thrift 
[WARNING:C:/Users/Me/Desktop/Thrift/tutorial.thrift:59] Could not find include file shared.thrift 

[ERROR:C:/Users/Me/Desktop/Thrift/tutorial.thrift:123] (last token was 'shared.SharedService') 
Service "shared.SharedService" has not been defined. 

希望的exe工作的人,因爲我很想避免這種情況,需要從源代碼構建。

+0

」*希望exe可以工作*「 - 它的確如此。這只是你的假設,EXE是問題所在。這個假設是錯誤的**,這可以通過嘗試Linux構建輕鬆證明,該構建的行爲完全相同。一般來說,你可能會重新考慮你的解決問題的策略。與其花費時間忙於安裝和下載事物,並且最終盲目地指責其中一種工具,您應該嘗試解決真正的問題,這需要您首先嚐試*瞭解問題所在。然後嘗試解決它。 – JensG

+0

你可以和我的文章第二行討論嗎?教程是爲了理解**而盲目追隨**。如果你想了解Thrift,你從哪裏開始?教程。也許你可以看看http://thrift.apache.org/tutorial/,而不是糾正我的問題解決方案。沒有提及你提到的文件,他們沒有提供exe文件。感謝您的建議,即它是我缺少的IDL文件。由於這是教程1,我還沒有掌握閱讀錯誤消息。 – afelt

+0

你指責了EXE,EXE沒有被破壞。第一條消息也很清楚地表明:'tutorial.thrift:59]無法找到include文件shared.thrift'。看第59行,你會發現一個'include'聲明,對吧?無論如何,再次感謝信息,非常有幫助。我看到很多人在這個問題上遇到問題,但從來沒有真正明白爲什麼。 – JensG

回答

0

命令

thrift -r --gen py tutorial.thrift 

使用-r[recurse]開關自動建立一個第二,包括IDL文件shared.thrift。這shared.thrift文件位於與tutorial.thrift相同的文件夾中。由於Thrift基於當前文件夾查找包含的文件,因此必須從該文件夾顯式調用Thrift編譯器。

假定,你勤儉的工作拷貝是在C:\節儉和thrift.exe是通過搜索路徑可達,打開命令提示符,導航到該文件夾​​,並再次輸入命令:

C:\> cd Thrift\tutorial 
C:\Thrift\tutorial> thrift.exe -r --gen py tutorial.thrift 

PS: 0.9.0稍微過時了。 0.9.1很好,即將發佈的0.9.2版本將會有更多的改進。

+1

看起來真正的問題是,教程不是基於基於exe的安裝編寫的。我認爲缺少將包含在源代碼中的文件。沒有shared.thrift,我可以找到。將不得不嘗試下載它,看看是否讓我進一步。 – afelt

+0

只是猜測一個URL,發現https://git-wip-us.apache.org/repos/asf?p=thrift.git;a=blob_plain;f=tutorial/shared.thrift。與此包括建設解決了這個問題......事實證明,沒有這些文件,如你所期望的EXE來,但教程沒有考慮需要下載**兩個**文件來跟隨它,如果你走的Windows EXE路線。 – afelt

+0

你說得對,我剛剛爲此創建了一個[ticket](https://issues.apache.org/jira/browse/THRIFT-2487)。感謝您指出了這一點。 – JensG

相關問題