我有一个Ruby脚本,希望在Java程序启动时运行。
当您告诉ScriptEngine第一次评估代码时,需要花费一些时间。我觉得花这么长时间是因为它首先需要编译代码,对吗?
我发现您可以编译Ruby代码,然后再对其进行评估。评估本身是快速的-编译部分是缓慢的部分。我在这里编译:
jruby = new ScriptEngineManager().getEngineByName("jruby");
Compilable compilingEngine = (Compilable)jruby;
String code = "print 'HELLO!'";
CompiledScript script;
script = compilingEngine.compile(code);
这个片段是需要一段时间的。稍后当您对其进行评估时,就可以了。
因此,当然,我想知道是否可以将已编译的代码“保存”到文件中,以便将来我可以“加载”它并仅执行它而无需再次编译。
正如其他人所说,使用CompiledScript是不可能的。但是,对于JRuby,您还有另一个选择。您可以使用命令行工具jrubyc将Ruby脚本编译为Java字节码,如下所示:
jrubyc <scriptname.rb>
这将产生一个名为scriptname.class的类文件。您可以从命令行运行该类,就好像它是具有main(String [] argv)方法的普通类一样(注意:jruby运行时需要在类路径中),当然您可以在以下位置将其加载到应用程序中运行。
您可以在此处找到有关jrubyc输出的更多详细信息:https : //github.com/jruby/jruby/wiki/JRubyCompiler#methods-in-output-class-file
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句