java - 如何在 Java 中执行 Ruby 文件?

标签 java ruby jruby

我正在尝试使用 Java 运行 Ruby 代码。这段代码给了我一个空结果。 (结果:空) 任何人都可以帮我找出错误吗?

Java:

    public static void callRuby(){

      ScriptEngine jruby = new ScriptEngineManager().getEngineByName("jruby");
        //process a ruby file
        try {           
             jruby.eval(new BufferedReader(new FileReader("rubyTest.rb")));
             jruby.put("a", "2");
             jruby.put("b", "3");   
             System.out.println("result: " +jruby.get("res"));

        } catch (FileNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (ScriptException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

}

rubyTest.rb

def addition(a,b)
puts a
puts b
res = a + b
end

最佳答案

您的rubyTest.rb脚本定义了一个函数addition(a, b),但是您在哪里调用该函数呢?

这定义了解释器中的函数:

jruby.eval(new BufferedReader(new FileReader("rubyTest.rb")));

然后你分配顶级变量ab,然后你询问res的值,但我没有查看程序调用 addition(a,b) 函数的任何位置。

关于java - 如何在 Java 中执行 Ruby 文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28195525/

相关文章:

java - 在 Android 上使用 JFrame(或外部等效项)

java - 添加这些匿名类的最紧凑/高效/可维护的方式

ruby-on-rails - Belongs_to 和 where 条件

mysql - Sidekiq:找到最后一份工作

ruby - 如何在 Windows 上构建 Qt Ruby/ruby-KDE/Qt 绑定(bind)?

java - Jruby 堆转储失败

java - 为什么我们在策略设计模式中需要上下文类?

java - 在dropwizard项目中使用ehcache

java - 如何在 Java 代码中使用使用 warbler 打包的 Ruby 类作为 jar?

rubygems - 使用 Bundler 打包本地 ruby ?