代码之家  ›  专栏  ›  技术社区  ›  nanda

java能运行编译后的scala代码吗?

  •  38
  • nanda  · 技术社区  · 15 年前

    Can命令 java scala ?

    4 回复  |  直到 15 年前
        1
  •  49
  •   Landei    15 年前

    如果包含了所有必要的Scala运行时lib(Scala),则可以运行Scala生成的字节码-库.jar,斯卡拉-swing.jar文件…)在类路径中。scala命令自动执行此操作,并支持特定于scala的命令行参数。

        2
  •  13
  •   Thilo    15 年前

    是的,可以。Scala被编译成Java字节码。但是请记住,它取决于Scala运行时类,因此类路径上仍然需要有Scala的jar文件。

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

    方便包装。

        3
  •  5
  •   atamanroman    15 年前

    Scala的设计很容易集成 虚拟机,主要是Java 虚拟机(JVM)。主斯卡拉 编译器scalac生成Java类 可以在JVM上运行的文件。 -&燃气轮机; http://www.artima.com/scalazine/articles/steps.html

    只要您安装了scala运行时,您就应该很好了:使用 scalac 和他们一起跑 java

        4
  •  4
  •   Community CDub    5 年前

    我只想补充我自己的答案,作为对未来读者的附加价值:

    scala如果不带参数运行,将运行一个交互式shell

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

        5
  •  0
  •   ForeverLearner    4 年前

    如果你仔细看的话 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 file classpath 斯卡拉-库.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