Jruby on rails 是如何加载jar包的
Posted ruby程序员
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Jruby on rails 是如何加载jar包的相关的知识,希望对你有一定的参考价值。
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,移动开发以及其他相关技术的分享,内容通俗易懂,有来自北京,上海,广州的技术达人不定期的分享。
以上是关于Jruby on rails 是如何加载jar包的的主要内容,如果未能解决你的问题,请参考以下文章