Scala REPL无法导入包

时间:2012-11-15 16:59:23

标签: scala import read-eval-print-loop

我正在尝试在Scala REPL中导入com.lambdaworks.crypto.SCryptUtilfrom crypto)。我正在从包含com / lambdaworks / crypto的Java目录运行REPL。

REPL找不到com.lambdaworks.crypto.SCryptUtil,但它可以自动填充com.lambdaworks.crypto,但在此之后找不到任何内容。

当我在项目中包含包后,在IntelliJ IDEA中使用REPL时,我能够找到SCryptUtil类。

我是否遗漏了导入所需的一些类路径参数?

1 个答案:

答案 0 :(得分:5)

REPL不会为你编译Java代码 - 它只是自动完成,因为它知道目录结构,但一旦到达crypto目录,它将找不到任何类文件。 / p>

通过向上移动目录并打开新的REPL,您可以更加显着地看到这一点 - 您将能够自动完成import java.com.lambdaworks.crypto,即使这显然不是真正的包层次结构。

在这种情况下,您可以移动到项目根目录,运行mvn compile来编译Java代码,然后像这样启动REPL(仍然在项目根目录中):

scala -classpath target/classes

现在您可以导入com.lambdaworks.crypto.SCryptUtil

这只能起作用,因为项目没有任何运行时依赖性,但在其他情况下,你可能需要在类路径中添加其他东西,以构建一个带有依赖关系的JAR(例如{{3 }},或使用Maven Maven Assembly pluginmvn scala:console目标。