虽然在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'包含在路径的末尾,因为有些回复说这是必要的,但我得到了相同的结果。
有什么建议吗?
答案 0 :(得分:1)
nil只是回报你评估你的表达的结果,puts ...
。 Puts打印了您的表达式,但puts的返回值为nil。它与ENV['JAVA_HOME']
的内容无关。 Nil只是意味着返回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指向它应该的位置。