在Windows中为Ruby和RJB设置JAVA_HOME环境变量

3
虽然似乎有很多关于在Windows中设置JAVA_HOME变量的问题和答案,但我并不完全确定哪里出了问题。我遵循了各种不同的设置环境变量的指示,当我在ruby中检查环境变量时,我得到:
c:\Ruby192>rib irb(main):001:0> puts ENV['JAVA_HOME'] "c:\progra~1\java\jdk1.6.0_20" => nil
所以我将这解释为环境变量已经被设置,因为我的jdk路径被返回,但是'nil'是什么意思?
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
所以从我所能看到的,要么nil意味着找不到JAVA_HOME,要么我没有指向正确的路径或其他一些问题。
我尝试将'\bin'包含在路径的末尾,因为有些回答说这是必要的,但我得到了相同的结果。
有什么建议吗?
1个回答

1

nil只是irb返回给您评估表达式的结果,该表达式是puts ...。Puts打印了您的表达式,但puts的返回值为nil。它与ENV['JAVA_HOME']的内容无关。Nil只是意味着puts返回了nil,这是完全正常的。尝试puts "hello",您会看到相同的结果。

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

我建议您在irb中尝试操作。例如:

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

...看看你得到了什么。那个路径看起来很像某种MSDOS模拟简写。也许你想用真正的东西替换它,比如C:\Program Files\java\jdk1.6.0_20,然后看看File.directory?()是否会更高兴。

编辑:

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接