jruby sunos 5.1无法运行jgem

时间:2014-09-29 13:07:20

标签: jruby sunos

看起来jruby-1.7.16在SunOS 5.10上无法正常工作。至少看起来不可能安装额外的宝石。

当我尝试运行jgem时,我收到以下错误:

NoMethodError: undefined method `name' for nil:NilClass
           _resort! at /export/home/my_user/jruby-1.7.16/lib/ruby/shared/rubygems/specification.rb:717
              sort! at org/jruby/RubyArray.java:3358
           _resort! at /export/home/my_user/jruby-1.7.16/lib/ruby/shared/rubygems/specification.rb:716
               _all at /export/home/my_user/jruby-1.7.16/lib/ruby/shared/rubygems/specification.rb:665
               each at /export/home/my_user/jruby-1.7.16/lib/ruby/shared/rubygems/specification.rb:855
       reverse_each at org/jruby/RubyEnumerable.java:1072
       latest_specs at /export/home/my_user/jruby-1.7.16/lib/ruby/shared/rubygems/specification.rb:971
  find_latest_files at /export/home/my_user/jruby-1.7.16/lib/ruby/shared/rubygems.rb:490
       load_plugins at /export/home/my_user/jruby-1.7.16/lib/ruby/shared/rubygems.rb:1006
             (root) at /export/home/my_user/jruby-1.7.16/lib/ruby/shared/rubygems/gem_runner.rb:81
            require at org/jruby/RubyKernel.java:1065
             (root) at /export/home/my_user/jruby-1.7.16/lib/ruby/shared/rubygems/core_ext/kernel_require.rb:1
             (root) at ./jgem:9

我尝试在Ubuntu LTS 12.04.4上使用相同的发行版,它可以正常工作,可以安装宝石。

我在Ubuntu中安装了必需的宝石,打包jruby并移动到SunOS机器,它没有帮助。

jruby是否完全支持SunOS 5.1? jruby和irb似乎运行良好,但jgem对我来说至关重要。

===== 编辑: 这些是我在jruby安装中找到的宝石

ls
axiom-types-0.1.1          equalizer-0.0.9            rake-10.1.0                ruby-maven-libs-3.1.1
coercible-1.0.0            ice_nine-0.11.0            rdoc-4.0.1                 thread_safe-0.3.4-java
descendants_tracker-0.0.4  maven-tools-1.0.5          ruby-maven-3.1.1.0.8       virtus-1.0.3

我在你提到的行前添加了puts,对于a.name和b.name,它看起来在virtus与thread_safe比较后发生了错误:

a = virtus
b= thread_safe
1
NoMethodError: undefined method `name' for nil:NilClass

1 个答案:

答案 0 :(得分:0)

似乎某些gem规范没有名称(这看起来很奇怪):

def self._resort!(specs) # :nodoc:
  specs.sort! { |a, b|
    names = a.name <=> b.name # line 717
    next names if names.nonzero?
    b.version <=> a.version
  }
end

我会尝试在names = a.name <=> b.name之前进行一次放置,以了解发生了什么...... 如果它是一个干净的JRuby安装而不是绝对值得问题报告,但仍然值得深入研究,因为核心团队可能在SunOS机器上很低:)