繁体   English   中英

在IntelliJ中具有Java模块的SBT项目

[英]SBT project with a Java module in IntelliJ

我正在学习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控制台中执行import bestbuy.Laptop ,但出现错误:

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

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

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

您还可以使用终端,在sbt console键入内容, sbt console将您的repl与项目类放在classpath中,以便可以导入和使用它们。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM