2014-11-21 102 views
0

我到处寻找,找不到任何有关如何让JRuby在AIX上工作的帮助。我试着解开二进制包,尝试使用jruby-complete.jar,但我偶然发现了同样的问题。JRuby无法在AIX机器上工作

所有错误似乎都是因为JRuby在lib文件的错误目录中查找而发生的。

例如,设置我GEM_PATH=/home/dev999/install_tmp/gem,然后我试着要求activerecord-jdbc-adapter,这是./gem/gems/activerecord-jdbc-adapter-1.3.12下安装,但由于某些原因的JRuby不断寻找根据创业板,如下图所示。

dev-host:/home/dev999/install_tmp$ jruby -e "require 'activerecord-jdbc-adapter'" 
Errno::ENOENT: ENOENT - /home/dev999/install_tmp/gem/gems/activemodel-4.1.8/lib/activerecord-jdbc-adapter 
         file? at org/jruby/RubyFileTest.java:131 
    contains_requirable_file? at /usr/local/jruby-1.7.16.1/lib/ruby/shared/rubygems/basic_specification.rb:46 
         any? at org/jruby/RubyEnumerable.java:1473 
    contains_requirable_file? at /usr/local/jruby-1.7.16.1/lib/ruby/shared/rubygems/basic_specification.rb:46 
         any? at org/jruby/RubyEnumerable.java:1473 
    contains_requirable_file? at /usr/local/jruby-1.7.16.1/lib/ruby/shared/rubygems/basic_specification.rb:44 
     find_inactive_by_path at /usr/local/jruby-1.7.16.1/lib/ruby/shared/rubygems/specification.rb:898 
         find at org/jruby/RubyEnumerable.java:592 
     find_inactive_by_path at /usr/local/jruby-1.7.16.1/lib/ruby/shared/rubygems/specification.rb:897 
       try_activate at /usr/local/jruby-1.7.16.1/lib/ruby/shared/rubygems.rb:183 
        require at /usr/local/jruby-1.7.16.1/lib/ruby/shared/rubygems/core_ext/kernel_require.rb:132 
        (root) at -e:1 

任何有关可能导致此问题的见解都将不胜感激。

编辑:服务器是AIX 64位;我们尝试了Java 1.6和1.7(64位和32位)(IBM针对AIX的定制构建),但我们最终在最终解决方案中使用了1.7 64位,尽管该版本似乎并未影响Ruby 1.7.9中的问题安装,但是由于我们无法使JRuby 1.7.16工作,所以我不能确定我们使用的Java构建是否可以解决问题。

+0

如果您仍然可以编辑问题,您可以添加您正在使用的AIX和哪个Java? – pedz 2014-11-21 15:00:27

回答

1

好的,所以服务器管理员和我花了两天的时间试图弄清楚这些事情,最后我总结了我们最终获得JRuby在AIX_64上工作的解决方案。

1。首先也是最重要的一点,我不得不安装JRuby 1.7.9,因为1.7.16稳定版本来自的主要下载页面jruby.org有很多(看似AIX特有的)我们想不通的错误;例如,在我原来的问题中显示错误的宝石路径分辨率。版本1.7.9自动排除大部分问题;

2)出于某种奇怪的原因,我仍然无法弄清楚,jirb将不会与下载的JRuby软件包附带的jline-2.11.jar lib一起使用。在某个时候,我得到了它的工作,但后来我无法追溯我的步骤,所以我放弃了。为了解决这个问题,我下载了jline-1.0.jar并替换下的 jline罐;请注意,即使我们用jline-1.0替换它,jar文件名也必须相同,即jline-2.11.jar,否则jirb会抱怨丢失的lib;

3)一些常用步骤:将jruby/bin添加到$PATH;确保which java显示您想要使用的正确的Java版本;设置$JAVA_HOME;

4)(可选,但非常有用的),以避免给我的用户的写权限授予/usr/<jruby>/<gem_paths>目录,但还是让我不必问我加export GEM_PATH=~/.gem.profile管理员安装宝石,然后mkdir ~/.gem 。要将宝石安装到我的主目录,我需要jgem install <gem_name> -i $GEM_PATH

希望这可以帮助其他用户解决同样的问题。

+0

你真的应该在https://github.com/jruby/jruby/issues报告这个 – kares 2014-11-27 08:39:02

0

我的主要建议是加入jruby邮件列表并在那里询问。我只用过一次jruby,并设法让它工作。这里是有点神奇,我真的不明白,我有我要求第一个文件之一的顶部:

# We need the db2j.jar loaded 
require 'db2j.jar' 

# Some feaking magic Java needs 
Java::JavaClass.for_name 'com.ibm.db2j.jdbc.DB2jDriver' 

# The connection string is jdbc:db2j:the/path/to/the/file where the 
# file is actually a directory. 
CloudscapeDriver = 'jdbc:db2j' 

你可以看到的邮件线索这里:http://comments.gmane.org/gmane.comp.lang.jruby.user/17856

好运

+0

感谢您的建议。我可以让所有的东西在我的Linux,OSX和Windows机器上运行。但是我无法让安装在AIX上工作。它不仅仅是activerecord-jdbc-adapter gem;它与任何宝石。不过,我会按照你对邮件列表的建议。谢谢! – hgorni 2014-11-21 12:36:00

+0

啊。我误解了。所以这更像是一个AIX问题。你能告诉我什么是org/jruby/RubyFileTest.java:131在做什么?也许在那个时候添加一些调试? – pedz 2014-11-21 14:58:38

相关问题