Windows 10家庭中文版,go version go1.11 windows/amd64,
Eclipse IDE for C/C++ Developers Photon Release (4.8.0), GoClipse 0.16.1(v201607061938),
背景:在前面開發Go項目時,自己已經把環境變量GOBIN刪除了,並且程序按照預期運行——在Eclipse的Console中輸出測試結果。
之前使用Eclipse+GoClipse開發Go項目時,遇到了下面的異常:
Executable file (...) doesn't exist.
此時,還存在一個項目go961,是之前建立的,其中的程序按照預期運行。
問題:為何這個新建的項目就無法運行呢?
之前測試項目go961時,刪除了環境變量GOBIN就正常了啊!
環境變量部分的異常:
檢查Windows 10環境變量時,沒有發現環境變量GOBIN,可是,在使用go env命令查看時卻發現GOBIN是有值的,並非為空。
正是因為GOBIN的值不為空,於是,異常產生了——編譯生成的可執行文件沒有在項目的bin目錄下,而是存在於GOROOT的bin目錄下,但Eclipse找的是項目的bin下的可執行文件,但沒找到。
接着,在Eclipse中各種配置、比較正常的項目go961和異常的項目go961——沒有發現配置差別、網絡查找資料——比如下面這篇:
https://github.com/GoClipse/goclipse/issues/197
資料中也是說需要把GOBIN設置為空:
可是,沒有設置GOBIN,可命令go env中的GOBIN卻不為空!是哪里影響到了呢?
在耗時一兩個小時卻無果后,靈光一閃!新建環境變量GOBIN,再刪除它!
因為GOBIN需要絕對路徑,所以,上面的設置是不對的,但俺們進行此操作的目的是——新建后刪除它!
接下來,刪除剛剛建立的GOBIN,再 重啟Eclipse 測試go962是否可以運行——成功運行!
-刪除后,命令go env顯示GOBIN為空:
測試:重啟計算機,執行go env命令,仍然顯示GOBIN為空!
-測試go962的結果
-在項目go962下新建app進行測試(參考昨天讀的關於go項目目錄結構的文章)——成功
-新建項目go910,執行項目中的程序,成功!
總結:
解決問題的原則就是 保持 GOBIN 為空!
發生問題的原因推測:
1.項目go962是之前還項目go961一起建立的,在建立項目go962時,可能自己還沒有刪除環境變量GOBIN;
2.在后面的學習Go語言開發時,自己還嘗試了使用LiteIDE,可能是在使用其過程中,GOBIN被它更改到 某個地方 了,雖然Windows的環境變量對話框中沒有,但go env執行后怎么會出現呢?
剛剛測試使用LiteIDE運行了一個程序,成功,運行完畢后,go env中的GOBIN還是為空!
參考鏈接:
1.https://github.com/GoClipse/goclipse/issues/197
2.GOROOT、GOPATH、GOBIN、project目錄(https://blog.csdn.net/xiongwenwu/article/details/52534949)
補充說明,
這次刪除GOBIN后,執行Eclipse、LiteIDE中的Go項目時,GOROOT下的bin中沒有出現項目的可執行文件了!
180910-1445更新:
使用visual studio code編寫了一個go程序 runoob.go,位於app2目錄下:
package main var a = "菜鳥教程" var b string = "runoob.com" var c bool func main() { println(a, b, c) }
通過命令行執行遇到下面的錯誤:
D:\ws\golang\prj1\src>go install ./app2 go install: no install location for directory D:\ws\golang\prj1\src\app2 outside GOPATH For more details see: 'go help gopath' D:\ws\golang\prj1\src>go install ./app2/runoob.go go install: no install location for .go files listed on command line (GOBIN not set) D:\ws\golang\prj1\src\app2>go install runoob.go go install: no install location for .go files listed on command line (GOBIN not set)
設置GOBIN后,可以使用go install運行程序:
D:\ws\golang\prj1\src\app2>go install runoob.go D:\ws\golang\prj1\src\app2>runoob.exe 菜鳥教程 runoob.com false D:\ws\golang\prj1\src\app2>dir 驅動器 D 中的卷是 新加卷 卷的序列號是 BAD3-E0B3 D:\ws\golang\prj1\src\app2 的目錄 2018/09/10 14:44 <DIR> . 2018/09/10 14:44 <DIR> .. 2018/09/10 14:44 1,021,440 runoob.exe 2018/09/10 14:40 118 runoob.go 2 個文件 1,021,558 字節 2 個目錄 78,705,295,360 可用字節