Jruby
jsr223 con lenny
apt-get install jruby-1.0
Oppure download del tar.gz dal sito del jruby e scompattamento in una directory. In questo secondo caso ricordarsi di creare la variabile d'ambiente JRUBY_HOME e accodare la PATH $JRUBY_HOME/bin.
File di test org/jrubycookbook/ch03/Ruby223Runner.java (Jruby CookBook O'Reilly):
package org.jrubycookbook.ch03; import javax.script.ScriptEngine; import javax.script.ScriptEngineManager; import javax.script.ScriptException; public class Ruby223Runner { public static void main(String[] args) throws ScriptException { ScriptEngineManager scriptManager = new ScriptEngineManager(); ScriptEngine engine = scriptManager.getEngineByName("jruby"); engine.eval("puts 'Hallo World'"); } }
Download di jsr223-engines.zip, unzip e cp di jruby-engine.jar da jruby/build a .:
bacedifo
Così funziona: download di
- jsr223-engines.zip
- jruby-engine-1.1.6.zip (da scripting.dev.java.net)
- jruby-1.1.6.tar.gz
Si scompatta jsr223-engines in ./; si scompatta jruby-1.1.6.tar.gz in /opt, si scompatta jruby-engine-1.1.6.zip in ./.
cp -v /opt/jruby-1.1.6/lib/jruby.jar ./jruby/lib cp -v ./jruby-engine-1.1.6/lib/jruby-engine.jar .
francesco@bacedifo:~/sviluppo/jruby$ javac org/jrubycookbook/ch03/Ruby223Runner.java francesco@bacedifo:~/sviluppo/jruby$ java -cp .:jruby/lib/jruby.jar:jruby-engine.jar org/jrubycookbook/ch03/Ruby223Runner Hallo World
java -version java version "1.6.0_12" Java(TM) SE Runtime Environment (build 1.6.0_12-b04) Java HotSpot(TM) Client VM (build 11.2-b01, mixed mode, sharing)
Trabocchetti
java org/jrubycookbook/ch03/Ruby223Runner Exception in thread "main" java.lang.NoSuchMethodError: org.jruby.Ruby.newInstance()Lorg/jruby/Ruby; at com.sun.script.jruby.JRubyScriptEngine.init(JRubyScriptEngine.java:475) at com.sun.script.jruby.JRubyScriptEngine.<init>(JRubyScriptEngine.java:96) at com.sun.script.jruby.JRubyScriptEngineFactory.getScriptEngine(JRubyScriptEngineFactory.java:134) at javax.script.ScriptEngineManager.getEngineByName(ScriptEngineManager.java:225) at org.jrubycookbook.ch03.Ruby223Runner.main(Ruby223Runner.java:11)
jruby.jar e jruby-engine.jar non sono alla stessa versione. manca lo switch -cp settato a jruby.jar e jruby-engine.jar (stessa versione)
java -cp .:./jruby.jar:./jruby-engine.jar org.jrubycookbook.ch03.Ruby223Runner builtin/java/exceptions.rb:18 warning: JavaUtilities.add_proxy_extender is deprecated - use JavaUtilities.extend_proxy instead Exception in thread "main" java.lang.NullPointerException at org.jrubycookbook.ch03.Ruby223Runner.main(Ruby223Runner.java:11)
jruby1.0 --version ruby 1.8.5 (2008-06-03 rev 4810) [i386-jruby1.0.2]
jruby1.0 è ancora installato, ma si sta usando jruby-1.1.6 (provare a disinstallare jruby1.0) oppure build path sporco di jar di versioni differenti.
debian-specifico
Se usa jruby scaricato dal sito, la costruzione dei classpath per l'inclusione di librerie jar darà dei problemi. La soluzione che funziona è:
- copiare lo script bash in /usr/lib/jruby/bin/jruby in $JRUBY_HOME/bin (sovrascriverlo)
- copiare i jar file in $JRUBY_HOME/lib