4

Windows 7 Enterprise を使用しており、JRuby を実行しようとしています。Ruby (1.9.3)、Java (jdk - 1.6.7)、および JRuby (1.7preview) の環境変数を設定しました。私はネットワーク ドライブを持っていますが、Ruby と JRuby の両方の gem を正常にダウンロードでき、それらがローカル ドライブに保存されているため、動作しているように見える HOME システム変数を作成しました。

ブラウザ (つまり、firefox、chrome) を起動しようとすると、JRuby ではハングしているように見えますが、Ruby ではハングしていないようです。JRubyが 10 分間実行を試行した後のトレースを次に示します。

irb(main):003:0> require 'rubygems'
=> false
irb(main):004:0> require 'watir-webdriver'
=> true
irb(main):005:0> b = Watir::Browser.new :ie
IRB::Abort: abort then interrupt! *<--Note I killed the process after 10 minutes*
    from c:/Ruby/jruby-bin-1.7.0.preview1/jruby-1.7.0.preview1/lib/ruby/gems
    /shared/gems/selenium-webdriver-2.22.2/lib/selenium/webdriver/common 
    /port_prober.rb:24:in `free?'       
    from c:/Ruby/jruby-bin-1.7.0.preview1/jruby-1.7.0.preview1/lib/ruby/gems
    /shared/gems/selenium-webdriver-2.22.2/lib/selenium/webdriver/common  
    /port_prober.rb:5:in `above'        
    from c:/Ruby/jruby-bin-1.7.0.preview1/jruby-1.7.0.preview1/lib/ruby/gems
    /shared/gems/selenium-webdriver-2.22.2/lib/selenium/webdriver/ie/bridge.rb:17:in
   `initialize'
    from org/jruby/RubyHash.java:1429:in `delete'
    from c:/Ruby/jruby-bin-1.7.0.preview1/jruby-1.7.0.preview1/lib/ruby/gems
    /shared/gems/selenium-webdriver-2.22.2/lib/selenium/webdriver/ie/bridge.rb:17:in
    `initialize'
    from c:/Ruby/jruby-bin-1.7.0.preview1/jruby-1.7.0.preview1/lib/ruby/gems
    /shared/gems/selenium-webdriver-2.22.2/lib/selenium/webdriver/common/driver.rb:3
    5:in `for'
    from c:/Ruby/jruby-bin-1.7.0.preview1/jruby-1.7.0.preview1/lib/ruby/gems
    /shared/gems/selenium-webdriver-2.22.2/lib/selenium/webdriver.rb:65:in `for'
    from c:/Ruby/jruby-bin-1.7.0.preview1/jruby-1.7.0.preview1/lib/ruby/gems
    /shared/gems/watir-webdriver-0.6.1/lib/watir-webdriver/browser.rb:35:in   
    `initialize'
    from (irb):5:in `evaluate'
    from org/jruby/RubyKernel.java:1037:in `eval'
    from org/jruby/RubyKernel.java:1353:in `loop'
    from org/jruby/RubyKernel.java:1146:in `catch'
    from org/jruby/RubyKernel.java:1146:in `catch'
    from c:\Ruby\jruby-bin-1.7.0.preview1\jruby-1.7.0.preview1\bin\irb:13:in
    `(root)'

開いているポートを探しているため、JRuby がハングしているようです。ネットワークには HTTP プロキシを使用する必要があり、そのためのシステム変数もセットアップしました。なぜ Watir が Ruby では機能するのに JRub では機能しないのか、私にはまったくわかりません。

4

1 に答える 1

6

私も同様の問題を抱えていましたselenium-webdriver-JRubyとJava6を使用しているときにブラウザを開かなかったのですが、Java7では動作しました。

Java 6にはIPv6に問題があるようで、IPv6インターフェイスで空きポートが見つからなかったことがわかりました。

解決策は、可能であればIPv6よりもIPv4を優先するようにJavaに指示することに追加-Djava.net.preferIPv4Stack=trueすることです。JAVA_OPTS

于 2012-08-08T13:13:51.127 に答える