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
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 生命周期阶段。
只是补充
- 项目根目录
- 来源
- 主要
- java
- Hey.java
- 斯卡拉
- There.scala
- java
- 主要
- 来源
然后:
$ sbt run