2011-07-07 90 views
3

尽管在Windows中设置JAVA_HOME变量似乎存在一堆问题和答案,但我并不完全确定问题出在哪里。在/为Windows中的Ruby和RJB设置JAVA_HOME环境变量

我已经按照上设置环境变量的各种不同的指令,当我在红宝石检查环境变量,我得到

 
c:\Ruby192>rib 
irb(main):001:0> puts ENV['JAVA_HOME'] 
"c:\progra~1\java\jdk1.6.0_20" 
=> nil 

所以我一直在解释这是环境变量被设置,作为我的jdk的路径返回,但'零'是什么?

 
echo %JAVA_HOME% 

也返回的路径,我的JDK。

当我运行

 
gem install rjb 

我得到

 
extconf.rb:39:in '(main)': JAVA_HOME is not a directory. (RuntimeError) 

当我看在extconf.rb文件,果然,我有

 
javahome = ENV['JAVA_HOME'] 
if javahome.nil? && RUBY_PLATFORM =~ /darwin/ 
    javahome = `/usr/libexec/java_home`.strip 
end 
unless javahome.nil? 
    if javahome[0] == ?" && javahome[-1] == ?" 
    javahome = javahome[1..-2] 
    end 
    raise "JAVA_HOME is not directory." unless File.directory?(javahome) 
    pt = Path.new 

所以,从我可以告诉,无论是否意味着JAVA_HOME没有被找到,或者我没有把它指向正确的路径或什么。

我试过把'\ bin'包括在路径的末尾,因为有些回复说这是必要的,但是我得到了相同的结果。

有什么建议吗?

回答

1

零只是irb返回给你评估你的表达,这是puts ...的结果。打印出你的表情,但是puts的返回值是零。它与ENV['JAVA_HOME']的内容无关。 Nil只是表示返回零,这是非常正常的。尝试puts "hello",你会看到同样的事情。

如果异常确实来自extconf.rb粘贴中的行。这意味着File.directory?(javahome)返回false。

我会先在irb中玩。即尝试:

File.directory?('c:\progra~1\java\jdk1.6.0_20')

...看看你会得到什么。该路径看起来像某种MSDOS wannabe速记。也许你想用C:\Program Files\java\jdk1.6.0_20这样的真实东西代替它,然后看看File.directory?()是否会变得更快乐。

编辑:

也可以尝试dir %JAVA_HOME%在DOS提示符。确保你实际上将你的JAVA_HOME指向了它应该在的位置。

相关问题