看起来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
答案 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机器上很低:)