scala如何使用java或java文件中定义的其他内容?

时间:2015-01-18 04:33:39

标签: java scala

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

2 个答案:

答案 0 :(得分:2)

如果您使用SBT,则使用Scala中的Java是相当无缝的。

我最小的示例项目显示Scala和Java的自由混合可能看起来像:

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

~~ build.sbt ~~

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

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

~~ src/Hey.java ~~

public class Hey {
    public static String yay = "Yay!!";
}

src/There.scala ~~

object There extends App {
    println(Hey.yay)
}

然后通过IDE或

运行There
$ sbt 'run-main There'

同样,如果您要在Scala项目中使用Java库,则可以将其用作Maven依赖项,而不考虑它是Scala还是Java:

~~ build.sbt ~~

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生命周期阶段。

答案 1 :(得分:0)

只是补充Owen's answer关于SBT(实际上更容易):

  • 项目根目录
    • SRC
        • 的java
          • Hey.java
          • There.scala

然后:

$ sbt run