Java有一个ScriptEngine系统,允许您以不同的语言运行/评估语句.
我知道JavaScript支持的事实,但我找不到任何其他语言来使用它.
例如,Ruby实现了吗?
hjk*_*321 12
这是一个确定系统中所有语言的脚本:
import java.util.List;
import javax.script.ScriptEngineManager;
import javax.script.ScriptEngine;
import javax.script.Bindings;
import javax.script.ScriptContext;
import javax.script.ScriptEngineFactory;
public class Test {
public static void main(String[] args)
{
ScriptEngineManager mgr = new ScriptEngineManager();
List<ScriptEngineFactory> factories = mgr.getEngineFactories();
for (ScriptEngineFactory factory : factories)
{
System.out.println("ScriptEngineFactory Info");
String engName = factory.getEngineName();
String engVersion = factory.getEngineVersion();
String langName = factory.getLanguageName();
String langVersion = factory.getLanguageVersion();
System.out.printf("\tScript Engine: %s (%s)\n", engName, engVersion);
List<String> engNames = factory.getNames();
for (String name : engNames)
{
System.out.printf("\tEngine Alias: %s\n", name);
}
System.out.printf("\tLanguage: %s (%s)\n", langName, langVersion);
}
}
}
Run Code Online (Sandbox Code Playgroud)
希望这可以帮助.
And*_*son 10
..我知道JavaScript支持的事实,..
ECMAscript,技术上.
..但我找不到任何其他语言来使用它.例如,Ruby实现了吗?
不会.默认情况下,ECMAscript引擎是唯一包含的引擎,这是我上次听到的.
不在ScriptEngine中,但您仍然可以使用BSF.从Apache Commons Bean Scripting Framework,您可以在此处找到它的文档.-
BSF 2.x目前支持多种脚本语言:
此外,他们自己的BSF引擎支持以下语言:
还有其他几种语言。例如,Jython(Java中的Python实现)。使用其他语言的方法是将JAR文件添加到CLASSPATH并引用正确的名称。
对于Ruby,有JRuby。请参阅以下内容:https : //github.com/jruby/jruby/wiki/JavaIntegration
ScriptEngineManager m = new ScriptEngineManager();
ScriptEngine rubyEngine = m.getEngineByName("jruby");
Run Code Online (Sandbox Code Playgroud)
Java ScriptEngine API 将适用于所有 JSR-223 脚本语言。我之前还没有找到这些文件的完整列表,但这篇文章做得很好, 我在哪里可以找到可用的 JSR-223 脚本语言列表? 这是该帖子中的一个列表,
JSR-223 脚本引擎
在别处维护的 JSR 223 脚本引擎
大多数都有一个特殊的实现来让它工作。例如,单独使用 python 是行不通的,您需要将 Jython jar 添加到类路径中。Ruby 也一样,你需要 JRuby。
| 归档时间: |
|
| 查看次数: |
14699 次 |
| 最近记录: |