虽然在Windows中设置JAVA_HOME变量似乎有一堆问题和答案,但我不完全确定我在哪里出错了。
我在设置环境变量时遵循了各种不同的指令,当我检查ruby中的环境变量时,我得到
<>之前c: Ruby192>肋骨irb(主要):001:0>把ENV("JAVA_HOME")"c: progra ~ 1 java jdk1.6.0_20"=比;零之前所以我一直在解释这是环境变量被设置,作为路径到我的jdk返回,但什么是'nil'??
<>之前回声% JAVA_HOME %之前还返回我的jdk的路径。
运行
<>之前Gem安装RJB之前我得到
<>之前extconf。rb:39:in '(main)': JAVA_HOME不是目录。(RuntimeError)之前当我查看extconf. conf文件时。rb文件,当然,我有
<>之前javahome = ENV['JAVA_HOME']如果javahome.nil ?&& RUBY_PLATFORM =~/darwin/Javahome = '/usr/libexec/java_home ' .strip结束除非javahome.nil ?如果javahome[0] == ?" && javahome[-1] == ?"Javahome = Javahome [1..-2]结束抛出"JAVA_HOME不是目录"除非File.directory?(javahome)pt = Path.new之前所以从我可以告诉,要么nil意味着JAVA_HOME没有被找到,或者我没有把它指向正确的路径或其他东西。
我试过把'bin'包括到路径的末尾,因为一些回应说这是必要的,但我得到了相同的结果。
有什么建议吗?
nil只是irb返回给您计算表达式的结果,即puts ...
。Puts输出表达式,但Puts的返回值为nil。它与ENV['JAVA_HOME']
的含量无关。Nil只是意味着put返回Nil,这很正常。试试puts "hello"
,你会看到同样的事情。
如果异常确实来自您的extconf。rb粘贴。表示File.directory?(javahome)
返回false。
File.directory?('c:progra~1javajdk1.6.0_20')
…看看你能得到什么。这条路径看起来很像某种MSDOS的缩写。也许你想把它换成真正的东西,比如C:Program Filesjavajdk1.6.0_20
,然后看看File.directory?()
是否变得更快乐。
还可以在DOS提示符中尝试dir %JAVA_HOME%
。确保您实际将JAVA_HOME指向了它应该在的位置