scala如何使用java文件中定义的类或其他东西?

scala如何使用java文件中定义的类或其他东西?,java,scala,Java,Scala,scala可以使用java文件中定义的类(或其他东西)吗?必须首先将这些java文件制作成jar包,然后从scala使用吗?如果您使用的是java,那么从scala使用java是相当无缝的 我认为,展示Scala和Java自由混合的最小示例项目可能如下所示: 项目根 build.sbt src/ Hey.java There.scala ~build.sbt~ javaSource in Compile <<= baseDirectory(_ / "src") scal

scala可以使用java文件中定义的类(或其他东西)吗?必须首先将这些java文件制作成jar包,然后从scala使用吗?

如果您使用的是java,那么从scala使用java是相当无缝的

我认为,展示Scala和Java自由混合的最小示例项目可能如下所示:

  • 项目根
    • build.sbt
    • src/
      • Hey.java
      • There.scala
~
build.sbt
~

javaSource in Compile <<= baseDirectory(_ / "src")

scalaSource in Compile <<= baseDirectory(_ / "src")
public class Hey {
    public static String yay = "Yay!!";
}
object There extends App {
    println(Hey.yay)
}
libraryDependencies ++= Seq(
    "com.neuronrobotics" % "nrjavaserial" % "3.7.5.1", // Java library
    "org.scala-lang.modules" % "scala-xml_2.11" % "1.0.3" // Scala library
)
~
src/There.scala
~

javaSource in Compile <<= baseDirectory(_ / "src")

scalaSource in Compile <<= baseDirectory(_ / "src")
public class Hey {
    public static String yay = "Yay!!";
}
object There extends App {
    println(Hey.yay)
}
libraryDependencies ++= Seq(
    "com.neuronrobotics" % "nrjavaserial" % "3.7.5.1", // Java library
    "org.scala-lang.modules" % "scala-xml_2.11" % "1.0.3" // Scala library
)
然后通过IDE或

$ sbt 'run-main There'
类似地,如果您想从Scala项目中使用Java库,则可以将其用作Maven依赖项,而不考虑它是Scala还是Java:

~
build.sbt
~

javaSource in Compile <<= baseDirectory(_ / "src")

scalaSource in Compile <<= baseDirectory(_ / "src")
public class Hey {
    public static String yay = "Yay!!";
}
object There extends App {
    println(Hey.yay)
}
libraryDependencies ++= Seq(
    "com.neuronrobotics" % "nrjavaserial" % "3.7.5.1", // Java library
    "org.scala-lang.modules" % "scala-xml_2.11" % "1.0.3" // Scala library
)
如果您使用Maven作为构建系统,那么使用库就像在SBT中一样简单。使用Maven混合使用Scala和Java源代码有点棘手,需要在编译之前进入Maven生命周期阶段。

只是对SBT的补充(实际上更容易):

  • 项目根
    • src
      • 主要
        • 爪哇
          • 嘿,java
        • 斯卡拉
          • 好了,斯卡拉
然后:

$ sbt run