在/中设置JAVA_HOME环境变量,在Windows中设置RUN和RUN

时间:2011-07-07 17:38:36

标签: java ruby windows java-home rjb

虽然在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 个答案:

答案 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指向它应该的位置。