[英]Can java run a compiled scala code?
命令java
可以運行已編譯的 Scala 代碼嗎? 如果是這樣,為什么我們有一個獨占命令scala
?
如果在類路徑中包含 Scala 的所有必要運行時庫(scala-library.jar、scala-swing.jar ...),則可以運行由 Scala 生成的字節碼。 scala 命令會自動執行此操作,並支持 Scala 特定的命令行參數。
是的,它可以。 Scala 被編譯成 Java 字節碼。 但是請記住,它依賴於 Scala 運行時類,因此您仍然需要在類路徑上保留 Scala 的 jar 文件。
如果是這樣,為什么我們有一個獨占命令 scala?
方便包裝。
Scala 旨在與在現代虛擬機(主要是 Java 虛擬機 (JVM))上運行的應用程序輕松集成。 主要的 Scala 編譯器 scalac 生成可以在 JVM 上運行的 Java 類文件。 -> http://www.artima.com/scalazine/articles/steps.html
只要您安裝了 scala 運行時,您就應該沒問題:使用scalac
編譯類並使用java
運行它們。
只想添加我自己的答案作為未來讀者的附加價值:
scala,如果不帶參數運行,將運行交互式 shell
scala,如果以文本文件名作為參數運行,則會將該文件視為scala腳本
這兩個不能用java來完成
如果仔細觀察, 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 "$@"
使用java
命令運行使用scalac
(scala 編譯器)編譯的.class
文件需要兩件事。
我們需要在classpath
包含scala-library.jar
和location of the .class file
的location of the .class file
。 要找到scala-library.jar
的位置,請執行以下命令:
which scala /usr/local/opt/scala@2.11/bin/scala
就我而言, scala-*.jar
文件位於:Mac 上的/usr/local/Cellar/scala@2.11/2.11.12_1/idea/lib
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 命令中使用分號(;) 作為分隔符。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.