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

how scala use class or something else defined in java file?

scala 可以使用在 java 文件中定义的 class(或其他东西)吗?是不是一定要先把这些java个文件打成jar包,然后从scala中使用?

如果您使用 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)
}

然后 运行 There 通过您的 IDE 或

$ sbt 'run-main There'

类似地,如果你有一个 Java 库你想从你的 Scala 项目中使用,你可以将它作为 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 生命周期阶段。

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

  • 项目根目录
    • 来源
      • 主要
        • java
          • Hey.java
        • 斯卡拉
          • There.scala

然后:

$ sbt run