Jruby on rails 环境搭建

 

点击「箭头所指处」可快速关注微信号:ruby程序员

 

 

 

Jruby和Rails的安装同Ruby on rails的步骤基本一样,这里是遇到的两个问题。

Rails 4.2.0 报错,没有对应的AR-JDBC版本,换成Rails4.0.2版本就好了

Jruby -S rails s  启动的时候报错:

 

OpenSSL::Cipher::CipherError: Illegal key size: possibly you need to install Java Cryptography Extension (JCE) Unlimited Strength Jurisdiction Policy Files for your JRE 

 

要求安装JCE,到Oracle 官网上 下载一个UnlimitedJCEPolicyJDK7.zip文件,解压缩后包含两个jar文件:local_policy.jar和 US_export_policy.jar。将这两个文件替换$JAVA_HOME/jre/lib/security目录下两个同名文件,此时,再jruby -S rails s启动app则可以正确运行了。

配置$CLASSPATH

 

Jruby on rails 默认存在$CLASSPATH, 在控制台可以查看该路径,是Jruby默认自动加载的几个路径

,就像Rails中的load_path一样,我们需要自定义这个加载路径,使我们的Jruby on rails程序可以调用

java的jar包。

 

--jar包通过maven来生成:详细请查看:http://liuzhijun.iteye.com/blog/1472008--

 

修改application.rb

Ruby代码

 

require 'java'   

$CLASSPATH << File.join(Rails.root, 'lib','java')   

  Dir.glob(File.join(Rails.root, 'lib','java',"**","*.jar")).each do |jar|           

  $CLASSPATH << jar   

end

 

这样,rails根目录下lib/java/**/*.jar就会被加载进来,通过查看$CLASSPATH就可以看到加载路径是否添加成功。

 

测试:

 

通过maven构建java项目,新建java文件 Ackermann.java,编译并打包生成jar包,将jar包拷贝到rails根目录/lib/java/下即可。

 

Java代码

 

public class Ackermann {
    public static int ack(int m, int n) {
        if (m == 0)
            return n + 1;
        if (n == 0)
            return ack(m - 1, 1);
        return ack(m - 1, ack(m, n - 1));
    }
}

 

在控制器中就可以直接调用了

 

@result = Java::Ackermann.ack(2,3) 

 

done! 

 

关注我们
微信号:ruby程序员 (←长按复制)

[Ruby程序员]旨在分享最新的Ruby & Rails,移动开发以及其他相关技术的分享,内容通俗易懂,有来自北京,上海,广州的技术达人不定期的分享。

 

 

你可能感兴趣的:(jar,on,Rails,mave,jruby)