【问题标题】:SBT project with a Java module in IntelliJ在 IntelliJ 中带有 Java 模块的 SBT 项目
【发布时间】:2015-10-01 15:50:42
【问题描述】:

我正在学习用 IntelliJ 开发项目。

我开始了一个新的 SBT 项目。现在我有两个文件,一个是Scala脚本projectName/src/main/scala/scalaScript.scala,另一个是Java类projectName/src/main/java/moduleName/MyClass.java

Scala 脚本用于在 Scala 控制台中逐行测试代码。为了测试我在MyClass.java 中定义的类,我想我需要先编译它,然后在Scala 脚本中编译import moduleName.MyClass。之后,我可以使用 java 类来创建对象并做任何我想做的事情。

如果我不使用 IntelliJ,我只需要转到 java 模块目录并调用 javac -cf myJavaLibrary.jar MyClass.java 来创建一个 jar。然后将 myJavaLibrary.jar 移动到与我的 Scala 脚本文件相同的目录中。

如何在 IntelliJ 中有效地做到这一点?什么是工作管道?

更新 1

我改用 Scala 工作表。但是在import moduleName.MyClass之后,有一个错误说找不到模块。

import bestbuy.Laptop

其中bestbuy 是模块名称,Laptop 是一个类。然后消息说:

Error:not found: value bestbuy
import bestbuy.Laptop
       ^
Error:(6, 10) not found: value bestbuy
;import bestbuy.Laptop
        ^
Error:(18, 50) not found: value bestbuy
println(MacroPrinter211.printImportInfo({import bestbuy.Laptop;}))
                                                ^
Error:(26, 50) not found: value bestbuy
println(MacroPrinter211.printImportInfo({import bestbuy.Laptop;}))
                                                ^

更新 2

在工作表中,您应该选中“Make project”前面的小框,以便编译所有源代码并将字节码保存在 SBT 期望的目标目录中。然后我可以在工作表中成功import bestbuy.Laptop

但是,我仍然期待我原来的问题的答案。如果我可以在 Scala 脚本文件而不是工作表中 import bestbuy.Laptop。在工作表中,所有代码都一次执行,而我想一次执行一行。

项目编译完成后,我尝试在Scala Console中执行import bestbuy.Laptop,但报错:

scala> import bestbuy.Laptop
<console>:13: error: not found: value bestbuy
       import bestbuy.Laptop
              ^

控制台的类路径似乎没有正确配置。如何配置控制台的类路径?

【问题讨论】:

    标签: java scala intellij-idea sbt


    【解决方案1】:

    要在 IntelliJ 中使用类似 repl 的环境,只需创建新的 scala 工作表文件,您就可以在其中导入您的 Java 类并使用它。 IDE 将为您编译所有内容。

    您也可以使用终端,输入sbt console,您将在类路径中拥有您的项目类的repl,以便您可以导入和使用它们。

    【讨论】:

    • 我试过工作表。它说找不到模块。我猜这是因为 java 文件没有被编译并添加到类路径中。我做错什么了吗?顺便说一句,如果我想坚持我的Scala脚本,我是否必须手动编译我的java代码并将jar添加到项目结构对话框中的库依赖中?
    • 确保项目已编译。在工作表中,您有一个小播放图标和两个复选框,其中一个是“制作项目”,选中它并单击播放图标。为了测试,我创建了新的 sbt 项目,在 java 中创建了一个包和基本类,然后我在 src 目录中创建了一个工作表(dir 应该无关紧要)并尝试创建 java 类的新实例。我遇到了和你一样的错误,但是在我检查了“制作项目”之后它按预期工作了。
    • 谢谢。这确实有效。但是,我仍然想知道一种在 Scala 控制台中逐行运行代码的方法。
    • sbt 独立于 IDE,您可以在 IDE 或任何其他终端中使用终端,只需 cd 到您的项目文件夹,运行 sbt 并输入 console 现在您在 scala repl 中您可以导入的项目类。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-19
    • 2011-11-30
    • 2019-06-20
    • 2016-08-09
    • 2018-04-26
    相关资源
    最近更新 更多