【问题标题】:Setting JAVA_HOME evironment variable in/for Ruby and RJB in windows在 Windows 中为 Ruby 和 RUN 设置 JAVA_HOME 环境变量
【发布时间】:2011-09-30 16:21:03
【问题描述】:

虽然似乎有很多与在 Windows 中设置 JAVA_HOME 变量相关的问题和答案,但我并不完全确定我哪里出错了。

我在设置环境变量方面遵循了各种不同的说明,当我在 ruby​​ 中检查环境变量时,我得到了

c:\Ruby192>肋骨 irb(main):001:0> 放置 ENV['JAVA_HOME'] "c:\progra~1\java\jdk1.6.0_20" => 无

所以我一直将其解释为设置了环境变量,因为返回了我的 jdk 的路径,但是“nil”是什么??

回显 %JAVA_HOME%

还返回我的 jdk 的路径。

当我跑步时

宝石安装 rjb

我明白了

extconf.rb:39:in '(main)': JAVA_HOME 不是目录。 (运行时错误)

当我查看 extconf.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”,因为一些回复说这是必要的,但我得到了相同的结果。

有什么建议吗?

【问题讨论】:

    标签: java ruby windows java-home rjb


    【解决方案1】:

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

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

    我会先在 irb 中使用它。 IE。试试:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-08-09
      • 2014-03-20
      • 2022-11-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多