我可以从JRE运行jrunscript吗?

时间:2009-11-16 17:46:22

标签: java

JDK有jrunscript可执行文件。 JRE是否具有可以执行的必需jar,以便不需要完整的JDK来使用jrunscript?

换句话说,我可以通过调用带有类名的java可执行文件来运行jrunscript。

3 个答案:

答案 0 :(得分:3)

JRunscript可执行文件只是javascript文件。 我不知道你是否可以直接使用jre安装的命令行,但你可以使用一个简单的javaclass并从命令行运行javaclass。

import java.io.FileReader;

import javax.script.ScriptEngine;
import javax.script.ScriptEngineManager;

public class RunScriptFile {
  public static void main(String[] args) {
    ScriptEngineManager manager = new ScriptEngineManager();
    ScriptEngine engine = manager.getEngineByName("js");
    try {
      FileReader reader = new FileReader(args[0]);
      engine.eval(reader);
      reader.close();
    } catch (Exception e) {
      e.printStackTrace();
    }
  }
}

编译(必需的JDK):

javac RunScriptFile.java.
You'll get "RunScriptFile.class"

要运行(需要JRE):

java RunScriptFile <myawesomescript.js>

希望这有帮助。

答案 1 :(得分:2)

jrunscript位于JDK上 tools.jar 内的com.sun.tools.script.shell.Main中。

该文件显然未与JRE捆绑在一起

正如有人提到的那样,可以使用少量的java代码来启动你的脚本:

new ScriptEngineManager().getEngineByName("js").eval(jsCode)

特殊的jrunscript函数,如ls(),mv(),echo()和read()不在JRE中。

这些函数实际上是在init脚本[see init.js from the openjdk repo]中定义的JavaScript函数。该代码在代码之前由jrunscript自动加载。

您可以在脚本中复制这些功能。请记住,openjdk是根据GPL许可的。

答案 2 :(得分:-1)

JRE包含运行java程序所需的所有内容,包括任何标准库jar文件。

JDK包含编写Java程序所需的工具和库。因此,只要您不小心导入实现类(例如com.sum.*中的内容),那么您的java程序应该在任何正确版本的JRE上运行。