2014-11-21 3 views
0

어디에서나 보았고 JRuby를 AIX에서 작동시키는 방법에 대한 도움을 찾을 수 없습니다. jruby-complete.jar을 사용해 보았지만 동일한 문제가 발생했습니다.JRuby를 AIX 머신에서 작동시키지 못함

JRuby가 lib 파일을 찾기 위해 잘못된 디렉토리를 찾고 있기 때문에 모든 오류가 발생하는 것 같습니다. 예를 들어

, 내가 설정 내 GEM_PATH=/home/dev999/install_tmp/gem 다음 내가 ./gem/gems/activerecord-jdbc-adapter-1.3.12에 설치되어 activerecord-jdbc-adapter을 요구하려고 노력하지만, 아래 그림과 같이 몇 가지 이유로 JRuby를가 ./gem/gems/activemodel-4.1.8/lib에서 보석을 찾고 유지합니다.

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 

이 문제의 원인에 대한 통찰력을 얻으실 수 있습니다.

EDIT : 서버는 AIX 64 비트입니다. 우리는 Java 1.6과 1.7 모두 64 비트와 32 비트 (AIX 용 IBM 사용자 빌드)를 시도했지만, 최종 버전에서는 1.7 64 비트를 사용했지만, Ruby 1.7.9에서 발견 된 문제에는 영향을 미치지 않습니다. 하지만 우리가 JRuby 1.7.16을 작동시키지 못했기 때문에, 우리가 사용했던 자바 빌드가이 문제에 참여할 수 있었는지 확신 할 수 없습니다.

+0

여전히 질문을 편집 할 수 있다면 사용중인 AIX와 Java를 추가 할 수 있습니까? – pedz

답변

1

OK, 서버 관리자와 나는이 문제를 해결하기 위해 이틀을 보냈고, 결국 AIX_64에서 JRuby를 사용하기위한 솔루션을 요약 할 수 있습니다.

1. 무엇보다도 가장 중요한 것은 1.7.16 메인 다운로드 페이지 에 안정 버전이 있기 때문에 JRuby 1.7.9을 설치해야했습니다. jruby.org에는 알 수없는 많은 버그 (겉으로보기에는 AIX에만 해당)가 있습니다. 예를 들어, 내 원래의 질문에 표시된 잘못된 보석 경로 해상도. 버전 1.7.9은 대부분의 문제를 자동으로 분류합니다.

2) 아직 알 수없는 이상한 이유로 jirb은 다운로드 한 JRuby 패키지와 함께 제공되는 jline-2.11.jar lib와 작동하지 않습니다. 어떤 시점에서 나는 일하도록 만들었지 만 나는 내 발걸음을 되돌릴 수 없어 포기했다. 이 문제를 해결하려면 jline-1.0.jar을 다운로드하고 jline jar<jruby_path>/lib/ruby/shared/readline/jline-2.11.jar 아래에 바꿉니다. jline-1.0으로 바꾸더라도 jar 파일 이름은 여전히 ​​같아야합니다. 그렇지 않으면 jirb은 누락 된 lib에 대해 불평합니다.

3) 몇 가지 일반적인 단계 : jruby/bin$PATH에 추가하십시오. which java이 올바른 Java 버전을 사용하고 있는지 확인하십시오. 세트 $JAVA_HOME;

4) (선택,하지만 매우 유용) 한 후, mkdir ~/.gem/usr/<jruby>/<gem_paths> 디렉토리 내 사용자의 쓰기 권한을 부여하지만 여전히 나를 내 .profileexport GEM_PATH=~/.gem를 추가 관리자에게 문의 할 필요없이 보석을 설치할 수 있도록하는 것을 피하기 위해 .내 홈 디렉토리에 보석을 설치하려면 jgem install <gem_name> -i $GEM_PATH을 사용하십시오.

다른 사용자가 동일한 문제로 고민하는 데 도움이되기를 바랍니다.

+0

정말로 https://github.com/jruby/jruby/issues에서 신고해야합니다. – kares

0

나의 주요 제안은 jruby 메일 링리스트에 가입하여 거기에 질문하는 것입니다. 나는 jruby를 한 번 사용했으며 제대로 작동하도록했습니다. http://comments.gmane.org/gmane.comp.lang.jruby.user/17856

행운 :

# 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' 

당신은 여기에 전자 메일 스레드를 볼 수 있습니다 여기에 내가 정말 내가 필요로하는 첫 번째 파일 중 하나의 상단에있는 것을 이해하지 못하는 마법의 비트가

+0

제안 해 주셔서 감사합니다. Linux, OSX 및 Windows 상자에서 모든 작업을 수행 할 수 있습니다. 그러나 설치가 AIX에서 작동하도록 할 수는 없습니다. 그것은 단지 activerecord-jdbc-adapter gem이 아닙니다. 그것은 어떤 보석과도 같습니다. 메일 링리스트에 대한 귀하의 제안을 따를 것입니다. 감사! – hgorni

+0

아. 나는 오해했다. 그래서 이것은 AIX 문제에 관한 것입니다. org/jruby/RubyFileTest.java가 무엇인지 알 수 있습니까? 아마 그 시점에서 약간의 디버그를 추가 할 것인가? – pedz