Scala REPL无法导入packge

Mar*_*ark 3 import scala read-eval-print-loop

我正在尝试在Scala REPL中导入com.lambdaworks.crypto.SCryptUtil(来自加密).我正在从包含com/lambdaworks/crypto的Java目录运行REPL.

REPL无法找到com.lambdaworks.crypto.SCryptUtil,但它可以自动完成,com.lambdaworks.crypto但在此之后找不到任何内容.

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

我错过了导入所需的一些类路径参数吗?

Tra*_*own 5

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

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

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

scala -classpath target/classes
Run Code Online (Sandbox Code Playgroud)

现在你可以导入了com.lambdaworks.crypto.SCryptUtil.

这只能起作用,因为项目没有任何运行时依赖项,但在其他情况下,您可能需要在类路径中添加其他内容,构建一个带有依赖项的JAR(例如使用Maven Assembly插件),或者使用mvn scala:consoleMaven Scala插件的目标.