3

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

REPL 找不到com.lambdaworks.crypto.SCryptUtil,但它可以自动完成,com.lambdaworks.crypto但在那之后找不到任何东西。

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

我是否缺少一些导入所需的类路径参数?

4

1 回答 1

6

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

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

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

scala -classpath target/classes

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

这只适用于项目没有任何运行时依赖项,但在其他情况下,您可能需要将其他内容添加到类路径中,以构建包含依赖项的 JAR(例如,使用Maven Assembly 插件),或者使用mvn scala:consoleMaven Scala 插件的目标。

于 2012-11-15T17:38:56.093 回答