【问题标题】:Scala REPL unable to import packgeScala REPL 无法导入包
【发布时间】:2012-11-15 16:59:22
【问题描述】:
我正在尝试在 Scala REPL 中导入 com.lambdaworks.crypto.SCryptUtil (from crypto)。我正在从包含 com/lambdaworks/crypto 的 Java 目录运行 REPL。
REPL 找不到 com.lambdaworks.crypto.SCryptUtil,但它可以自动补全到 com.lambdaworks.crypto,但之后找不到任何东西。
当我在项目中包含包后在 IntelliJ IDEA 中使用 REPL 时,我能够找到 SCryptUtil 类。
我是否遗漏了一些导入所需的类路径参数?
【问题讨论】:
标签:
scala
import
read-eval-print-loop
【解决方案1】:
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 的 mvn scala:console 目标 Scala plugin。