java可以运行编译的scala代码吗?

时间:2010-09-02 10:01:27

标签: java scala

命令java可以运行已编译的scala代码吗?如果是这样,为什么我们有一个独占命令scala

5 个答案:

答案 0 :(得分:48)

如果在类路径中包含Scala(scala-library.jar,scala-swing.jar ...)的所有必需运行时库,则可以运行Scala生成的字节代码。 scala命令自动执行此操作,并支持Scala特定的命令行参数。

答案 1 :(得分:12)

是的,它可以。 Scala编译为Java字节码。但请记住,这取决于Scala运行时类,因此您仍需要在类路径上使用Scala的jar文件。

  

如果是这样,为什么我们有一个独占命令scala?

便利包装。

答案 2 :(得分:5)

  

Scala旨在轻松集成   与现代运行的应用程序   虚拟机,主要是Java   虚拟机(JVM)。主Scala   编译器,scalac,生成Java类   可以在JVM上运行的文件。    - > http://www.artima.com/scalazine/articles/steps.html

只要您安装了scala运行时,就应该没问题:使用scalac编译类并使用java运行它们。

答案 3 :(得分:4)

只想添加我自己的答案作为未来读者的附加值:

  

scala,如果没有参数运行,将运行交互式shell

     

scala,如果使用文本文件名作为参数运行,则会将该文件视为scala脚本

这两个不能使用java

完成

答案 4 :(得分:0)

如果您仔细观察,scala 命令只是一个 bash 帮助程序脚本,它总结为以下命令:

$cat /usr/local/Cellar/scala@2.11/2.11.12_1/libexec/bin/scala

execCommand \
  "${JAVACMD:=java}" \
  $JAVA_OPTS \
  "${java_args[@]}" \
  "${classpath_args[@]}" \
  -Dscala.home="$SCALA_HOME" \
  $OVERRIDE_USEJAVACP \
  "$EMACS_OPT" \
  $WINDOWS_OPT \
   scala.tools.nsc.MainGenericRunner  "$@"

使用 .class 命令运行使用 scalac(scala 编译器)编译的 java 文件需要两件事。

  1. 我们需要在 scala-library.jar 中包含 location of the .class fileclasspath。要查找 scala-library.jar 的位置,请执行 下面:

    which scala /usr/local/opt/scala@2.11/bin/scala

    就我而言,scala-*.jar 文件位于: /usr/local/Cellar/scala@2.11/2.11.12_1/idea/lib 在 Mac 上

  2. Main2.class 中的 /training/example1/scala 文件的位置。

因此,要执行该程序,我们可以使用以下命令:

java -cp /usr/local/Cellar/scala@2.11/2.11.12_1/idea/lib/scala-library.jar:/training/example1/scala/ Main2

EDIT-1:如果你使用的是windows,请在java classpath命令中使用分号(;)作为分隔符。