为windows中的Ruby和RJB设置/中的JAVA_HOME环境变量



虽然在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。

我将从在irb中使用它开始。即尝试:

File.directory?('c:progra~1javajdk1.6.0_20')

…看看你能得到什么。这条路径看起来很像某种MSDOS的缩写。也许你想把它换成真正的东西,比如C:Program Filesjavajdk1.6.0_20,然后看看File.directory?()是否变得更快乐。

编辑:

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

最新更新