2012-04-21 5 views
0

私はJRuby、Open URI、およびJRuby-OSSLを使用して作成しようとしている非常に単純なプログラムに問題があります。JRuby + OpenURI + HTTPSでの問題

私が使用したJRuby-OSSL宝石をインストール:

gem install jruby-openssl 

を、最新のJRuby-完全なjarファイル(1.6.7)をダウンロードしました。

私は、簡単なスクリプトtest.rbあります

require 'jruby/openssl/gem_only' 
require 'open-uri' 
open('https://google.com') 

を、私はこのようにそれを実行すると:

java -jar jruby-complete-1.6.7.jar test.rb 

私が手:

NameError: uninitialized constant Net::HTTP::OpenSSL 
    const_missing at org/jruby/RubyModule.java:2642 
     use_ssl= at file:/Users/mislocin/.m2/repository/org/jruby/jruby-complete/1.6.7/jruby-complete-1.6.7.jar!/META-INF/jruby.home/lib/ruby/1.8/net/https.rb:124 
     open_http at file:/Users/mislocin/.m2/repository/org/jruby/jruby-complete/1.6.7/jruby-complete-1.6.7.jar!/META-INF/jruby.home/lib/ruby/1.8/open-uri.rb:231 
    buffer_open at file:/Users/mislocin/.m2/repository/org/jruby/jruby-complete/1.6.7/jruby-complete-1.6.7.jar!/META-INF/jruby.home/lib/ruby/1.8/open-uri.rb:616 
     open_loop at file:/Users/mislocin/.m2/repository/org/jruby/jruby-complete/1.6.7/jruby-complete-1.6.7.jar!/META-INF/jruby.home/lib/ruby/1.8/open-uri.rb:164 
      catch at org/jruby/RubyKernel.java:1183 
     open_loop at file:/Users/mislocin/.m2/repository/org/jruby/jruby-complete/1.6.7/jruby-complete-1.6.7.jar!/META-INF/jruby.home/lib/ruby/1.8/open-uri.rb:162 
     open_uri at file:/Users/mislocin/.m2/repository/org/jruby/jruby-complete/1.6.7/jruby-complete-1.6.7.jar!/META-INF/jruby.home/lib/ruby/1.8/open-uri.rb:132 
      open at file:/Users/mislocin/.m2/repository/org/jruby/jruby-complete/1.6.7/jruby-complete-1.6.7.jar!/META-INF/jruby.home/lib/ruby/1.8/open-uri.rb:518 
      open at file:/Users/mislocin/.m2/repository/org/jruby/jruby-complete/1.6.7/jruby-complete-1.6.7.jar!/META-INF/jruby.home/lib/ruby/1.8/open-uri.rb:30 
     (root) at test.rb:4 

私は私かなり確信していますいくつかの詳細が欠落しています。代わりにのopensslを必要と

答えて

-1

OKは、私のエラーを検出しました。

誤って、私はGEM_PATHではなく私のgem repoを指すGEM_HOME変数を設定しました。環境変数GEM_PATHを設定すると、すべて正常に動作します。

+0

私の本ではそれは良い答えではありません。実際のディレクトリ構造を表示せずに、これらのパスの詳細を指定できました。ちょっとした考え。しかし、それはまだゼロです。 –

1

試してみてください。

require 'openssl' 
require 'open-uri' 
open('https://google.com') 

もちろんのよりも、これはおそらくあなたの問題を解決することはできません。 gem install jruby-opensslあなたのjrubyの宝石のうち、jrubyを使用しないでjavaを直接起動するよりも、あなたのENV変数に基づいて宝石の解決に頼るべきではありません。

あなたが証明書の検証を無視するようにそれを設定していないとして、あなたはまた、SSLErrorを期待するべきである、ここでhttpsを取得する方法のサンプルです://のURI:https://gist.github.com/1361989

+0

残念ながら、私が「openssl」を必要とすると試してみると、助けになりませんでした。LoadError:OpenSSL :: SSLにはjruby-openssl gemが必要です。私はJVMの中からこのコードを呼び出す必要があるので、私はjrubyコマンドを使用しません。他のアイデア? –

+0

あなたがやろうとしていることは、私の答えですでに触れているように移植可能に「不可能」です。 gemを 'gem_home'にFSにインストールしますが、' gem_home'を使用するよりも 'java -jar'を使用する方がいいです - 同じGemがインストールされている' GEM_HOME'を持つコンピュータにインストールされていない限り) ** jruby-complete-1.6.7.jar **には、gyemをjarの "内側"に置くために必要な(デフォルトの)rubygemsのインストール(* META-INF/jruby.home *のチェック)が含まれています。https: /github.com/jruby/warblerは実行可能なjruby jarをいくつかの宝石と共にビルドします。 – kares