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:

  1. Installation von Java 6
  2. Installation von JRuby
  3. Download der Script-Engines
  4. Anlegen eines Beispiel-Projektes
  5. Im lib-Verzeichnis alle JRuby-Jars und die JRuby-Engine aus der Zip-Datei jsr223-engines.zip kopieren
  6. 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);
             }
          }
       }
    }
  7. In den Classpath alle Jars aus dem lib-Verzeichnis hinzufügen
  8. 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

Von admin, 13. Juni 2007, 23:09 Uhr

Kommentiere den Artikel oder setze einen Trackback

Bisher keine Kommentare zum Artikel

  1. Bisher keine Kommentare

Kommentiere den Artikel



Kommentare zu diesem Artikel über RSS 2.0-Feed verfolgen