Die meisten Tutorials bezüglich dem Einsatz von JRuby beschreiben nur, wie man JRuby-Skripte allein aufruft oder wie man innerhalb eines JRuby-Skriptes auf Java-Klassen zugreifen kann. Mir fehlte bisher wie man mittels der Scripting API von Java 6 JRuby aufruft.
Folgendes muss man machen, damit man generisch ein Ruby-Skript innerhalb von Java ausführen kann:
- Installation von Java 6
- Installation von JRuby
- Download der Script-Engines
- Anlegen eines Beispiel-Projektes
- Im lib-Verzeichnis alle JRuby-Jars und die JRuby-Engine aus der Zip-Datei
jsr223-engines.zipkopieren - Test-Programm schreiben:
import java.util.List; import javax.script.ScriptEngineFactory; import javax.script.ScriptEngineManager; public class ShowScriptEngines { public static void main(String[] args) { ScriptEngineManager scriptManager = new ScriptEngineManager(); List<ScriptEngineFactory> factories = scriptManager.getEngineFactories(); for(ScriptEngineFactory factory : factories) { System.out.println( factory.getEngineName()+" " +factory.getEngineVersion() +"("+factory.getLanguageName()+" " +factory.getLanguageVersion()+")"); ScriptEngine engine = scriptManager.getEngineByName("jruby"); engine.put("params", args); try { engine.eval("print 'Parameters: '"); engine.eval("$params.each{|a| print a}"); } catch(ScriptException ex) { ex.printStackTrace(System.err); } } } }
- In den Classpath alle Jars aus dem lib-Verzeichnis hinzufügen
- Aufruf:
java ShowScriptEngines 1 2 3
Folgender Ausgabe sollte erfolgen:
Mozilla Rhino 1.6 release 2(ECMAScript 1.6)
jruby 1.0(ruby 1.8.4)
Parameters: 123
Bisher keine Kommentare