JDK有jrunscript可执行文件。 JRE是否具有可以执行的必需jar,以便不需要完整的JDK来使用jrunscript?
换句话说,我可以通过调用带有类名的java可执行文件来运行jrunscript。
答案 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上运行。