我正在尝试在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
类。
我是否遗漏了导入所需的一些类路径参数?
答案 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 plugin的mvn scala:console
目标。