2012-11-15 114 views
3

我想在Scala REPL中導入com.lambdaworks.crypto.SCryptUtilfrom crypto)。我從包含com/lambdaworks/crypto的Java目錄運行REPL。斯卡拉REPL無法導入打包

REPL找不到com.lambdaworks.crypto.SCryptUtil,但它可以自動完成至com.lambdaworks.crypto,但之後無法找到任何內容。

當我在IntelliJ IDEA中將REPL包含在項目中後使用REPL時,我能夠找到SCryptUtil類。

我是否缺少導入所需的一些類路徑參數?

回答

5

REPL不會爲您編譯Java代碼 - 它只是自動完成,因爲它知道目錄結構,但一旦它到達crypto目錄,它將找不到任何類文件。

通過向上移動一個目錄並打開一個新的REPL,您可以更加戲劇性地看到這一點 - 即使這顯然不是真正的包層次結構,您也可以自動完成import java.com.lambdaworks.crypto

在這種情況下,你可以移動到項目的根目錄,運行mvn compile編譯Java代碼,然後啓動REPL這樣的(還是在項目的根):

scala -classpath target/classes 

現在你可以導入com.lambdaworks.crypto.SCryptUtil

這隻適用,因爲該項目沒有任何運行時依賴關係,但是 - 在其他情況下,您可能需要將其他東西添加到類路徑中,構建一個JAR,其中包含依賴關係(例如Maven Assembly plugin) ,或者使用Maven Scala pluginmvn scala:console目標。