Sinatraのあらかると

記録することで、環境構築で悩まない。

javaからjrubyを呼び出すと...

ハロウィーンが終わって、

トリックオアトリートの面影を残しますか...いたずらなストリーム。

Maven Repository: org.jruby » jruby-complete

jruby-complete.jarを手に入れます。

Eclipseなどで外部ライブラリとして登録します。

下のフォルダ構成にします。

src/Sample.rb

src/Main.java

import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;

import javax.script.Invocable;
import javax.script.ScriptEngine;
import javax.script.ScriptEngineManager;
import javax.script.ScriptException;

public class Main {


    public static void main(String[] args) throws Exception {

        String s;

        ScriptEngineManager manager = new ScriptEngineManager();
        ScriptEngine engine = manager.getEngineByName("jruby");

        BufferedReader in = new BufferedReader(
                new FileReader("./src/Sample.rb"));

        try {

            while((s = in.readLine()) != null) {

            System.out.println();

            engine.eval(s);

            ((Invocable)engine).invokeMethod("","juke");

            System.out.println();

            ((Invocable)engine).invokeFunction("jack");

            System.out.println();

            in.close();

            }

        } catch(IOException ed) {
         //code here

            }

        } catch (ScriptException ex) {
         //code here

            }

        } catch(Exception e) {
         //code here

            }

        } finally{

         //code here
    }
  }
}
require './src/Sample.rb'

def juke

  puts ''
  puts ' 時計台 開始 '.center(60,'-')
  puts ''
  print ' 現在時刻は... '
  puts Time.new.strftime('%Y年%m月%d日 %H時%M分%S秒です...')
  puts ''
  puts ' 時計台 終了'.center(60,'-')

end

def jack

  puts ''
  puts ' Rubyのバージョン確認 開始 '.center(60,'-')
  puts ''
  puts ' Rubyのバージョンは: ' + RUBY_VERSION + ' です。'
  puts ''
  puts ' Rubyのバージョン確認 終了 '.center(60,'-')

end

WARNING: An illegal reflective access operation has occurred

WARNING: Illegal reflective access by org.jruby.util.io.FilenoUtil (file:/**/jruby-complete-9.1.13.0.jar) to

method sun.nio.ch.SelChImpl.getFD()

WARNING: Please consider reporting this to the maintainers of org.jruby.util.io.FilenoUtil

WARNING: Use --illegal-access=warn to enable warnings of further illegal reflective access operations

WARNING: All illegal access operations will be denied in a future release

なんかこんなメッセージがでました。これはおそらく、このアクセスをメンテナに報告してください。今後は、このアクセスを拒否しますという話である。ストリームから流れてきたのですが、9.1.13ではjrubyは動作していますよ。もったいないね。

javaはわかると面白い言語ですね。

Copyright © 2007-2017 Takayuki Kamiyama. All Rights Reserved.