命令java
可以运行已编译的scala代码吗?如果是这样,为什么我们有一个独占命令scala
?
答案 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
文件需要两件事。
我们需要在 scala-library.jar
中包含 location of the .class file
和 classpath
。要查找 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 上
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命令中使用分号(;)作为分隔符。