【问题标题】:Does scala have something similar to jython's standalone jar?scala 是否有类似于 jython 的独立 jar 的东西?
【发布时间】:2013-02-16 02:46:40
【问题描述】:

使用 jython 的独立 jar,您可以:

java -jar jython-standalone-2.5.3.jar

然后 repl 开始。

我想用 scala 做到这一点:

java -jar scala-standalone.jar 

这会让我进入 scala repl。

让我换个方式问这个问题。 你如何使用调用 scala repl java.

java -cp <jars> <class-with-main-method>

特别是,我不想使用 scala cli,甚至不想安装它。

【问题讨论】:

  • 我不确定我是否理解您在这里要求的内容... Scala is 是一个罐子; repl、脚本、编译器、scaladoc -- 它们都是 jar 文件。
  • 严格来说,这不是 Scala 特有的问题。您可以轻松地为 Java 和 Scala 创建一个支持 java -jar ... 的 JAR 文件。您只需要包含 Scala 标准库 JAR。
  • @Daniel。是的,scala 是一个 jar 等,但我只是想知道这是否是一个与你需要的所有东西捆绑在一起的 jar,你可以使用 java 启动 repl。 jython 有类似的东西。您可以安装 jython,它是一个 repl、脚本、编译器等,或者您可以下载独立的 jar 并使用它。在第一种情况下,您使用“jython ...”,在第二种情况下,您使用“java -jar jython.jar”
  • @Randall。我认为它是一个 scala 问题,因为它涉及 scala repl 的开始。是的,您也可以将其视为一个 java 问题,但是这些类别是模糊的。最后,寻找 scala 标记问题的人更有可能回答这个问题。我知道有人可以做到这一点。只需获取 jars 并执行 java
    ,repl 就会启动。 Jython 通过提供一个包含您需要的所有内容的独立 jar 来轻松执行此操作。

标签: scala jython


【解决方案1】:

如有必要,您可以自己构建一个。有一个recent blog post 向您展示了如何创建 REPL。如果您使用 sbt 构建该代码并放入 sbt-assembly 插件,您应该通过 sbt assembly 获得独立的 REPL。

【讨论】:

    【解决方案2】:

    您绝对可以通过java -jar 做到这一点,但我猜它不会像 jython 那样简单。例如,如果您在 scala 的标准安装中查看 scala.bat(在 Windows 上),您会看到它使用了以下命令的一些变体:

    "java" -Xmx256M -Xms32M -Dscala.home="C:\PROGRA~2\scala\bin\.." -Denv.emacs=""
    -Dscala.usejavacp=true  -cp "C:\PROGRA~2\scala\bin\..\lib\jline.jar;
    C:\PROGRA~2\scala\bin\..\lib\scala-actors.jar;
    C:\PROGRA~2\scala\bin\..\lib\scala-compiler.jar;
    C:\PROGRA~2\scala\bin\..\lib\scala-library.jar;
    C:\PROGRA~2\scala\bin\..\lib\scala-partest.jar;
    C:\PROGRA~2\scala\bin\..\lib\scala-reflect.jar;
    C:\PROGRA~2\scala\bin\..\lib\scala-swing.jar;
    C:\PROGRA~2\scala\bin\..\lib\scalacheck.jar;
    C:\PROGRA~2\scala\bin\..\lib\scalap.jar" scala.tools.nsc.MainGenericRunner
    

    当然都在一行中。我在 scala 安装目录和bin 文件夹中做了一个cd 并直接运行了这个命令。它给了我一个 scala repl。

    我猜你可能会跳过一些 jars(swing、actor 等),将其余部分合并到一个 jar 中并去掉一些命令行参数,然后使用 java -jar myscala.jar 启动它

    PS:如果您尝试使用 android 做某事,请注意它不会起作用。因为我之前试过:Scala REPL in an Android app

    :D

    【讨论】:

      【解决方案3】:

      你的意思是像 scala 脚本?

      http://www.scala-lang.org/docu/files/tools/scala.html

      【讨论】:

      • 是的,但是有一个直接使用java的cli并且只有一个jar。这就是 jython 提供的。是的,只需将 jar 组合在一起就可以将所有这些放在一起,但我喜欢 jython 方法的优雅和易用性:只需获取一个 jython jar,这就是您所需要的。
      猜你喜欢
      • 2016-08-02
      • 2011-12-04
      • 2011-01-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-09
      相关资源
      最近更新 更多