Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/396.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
带有IntelliJ中Java模块的SBT项目_Java_Scala_Intellij Idea_Sbt - Fatal编程技术网

带有IntelliJ中Java模块的SBT项目

带有IntelliJ中Java模块的SBT项目,java,scala,intellij-idea,sbt,Java,Scala,Intellij Idea,Sbt,我在IntelliJ学习开发项目 我开始了一个新的SBT项目。现在我有两个文件,一个是Scala脚本projectName/src/main/Scala/scalaScript.Scala,另一个是Java类projectName/src/main/Java/moduleName/MyClass.Java Scala脚本用于在Scala控制台中逐行测试代码。为了测试我在MyClass.java中定义的类,我想我需要先编译它,然后在Scala脚本中导入moduleName.MyClass。在那之后

我在IntelliJ学习开发项目

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

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

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

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

更新1

我转而使用Scala工作表。但是,在导入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

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

但是,我仍在等待我原来问题的答案。如果我能
将bestbuy.Laptop导入Scala脚本文件而不是工作表中。在工作表中,所有代码一次执行,而我希望一次执行一行代码

编译项目后,我尝试在Scala控制台中执行导入bestbuy.Laptop,但出现错误:

scala> import bestbuy.Laptop
<console>:13: error: not found: value bestbuy
       import bestbuy.Laptop
              ^
scala>导入百思买笔记本电脑
:13:错误:未找到:价值百思买
进口百思买笔记本电脑
^

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

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


您还可以使用terminal,输入
sbt控制台
,然后将repl与项目类一起放在classpath中,这样您就可以导入并使用它们了。

。它说找不到模块。我猜这是因为java文件没有被编译并添加到类路径中。我做错什么了吗?顺便说一下,如果我想坚持使用Scala脚本,我是否必须手动编译java代码,并在“项目结构”对话框中将jar添加到库依赖项中?确保项目已编译。在工作表中有一个小的播放图标和两个复选框,其中一个是“制作项目”,选中它并单击播放图标。为了测试,我创建了新的sbt项目,在java中创建了一个包和基本类,然后在src目录中创建了一个工作表(dir应该不重要),并尝试创建java类的新实例。我得到了和你一样的错误,但在我检查“Make project”后,它按预期工作。谢谢。这确实有效。但是,我仍然想知道一种在Scala控制台中逐行运行代码的方法。sbt独立于IDE,您可以使用IDE内部的终端或任何其他终端,只需将cd刻录到项目文件夹中,运行
sbt
并键入
Console
,现在您在Scala repl中,可以导入项目类。