2012-11-15 117 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目标。