在scala中,通常的做法是堆棧包語句to allow shorter imports,但是當我使用堆棧包將文件加載到scala IDE中時,我嘗試使用從同一個組織開始的導入,從看起來像是演示編譯器。該代碼在IDE之外的sbt中編譯得很好。爲什麼scala-ide不允許在文件頂部有多個包定義?
的示例代碼片段如下:
package com.coltfred
package util
package time
import com.github.nscala_time.time.Imports._
在進口我得到的錯誤object github is not a member of package com.coltfred.util.com
。
如果我將導入移動到單行,錯誤將消失,但我們在代碼庫中經常使用這種做法,因此將它們全部更改爲單行包語句將會很痛苦。
爲什麼會發生這種情況,有什麼我可以解決的嗎?
編輯:
我用Eclipse的SBT插件生成這個Eclipse項目文件。目錄結構應該是什麼,所有的依賴關係都在類路徑中。
編輯2:
原來有一個在util包(這應該是在同一個包)的測試樹中的文件,但必須在頂部有一個重複的包語句。我沒有檢查測試樹,因爲它不應該影響主樹的編譯,但顯然我錯了。
我打電話給我的目錄pUtil。我在我的所有包名稱的開頭總是使用'p'。 –
看到我的第二次編輯。這不是一個目錄,而是一個糟糕的測試文件。 – coltfred
我選擇這個作爲「正確」的答案,因爲它是問題的根源,但要小心未來的人們也要考慮測試文件! – coltfred