Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/383.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2008/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在windows中为Ruby和RJB设置JAVA_HOME环境变量_Java_Ruby_Windows_Java Home_Rjb - Fatal编程技术网

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

在windows中为Ruby和RJB设置JAVA_HOME环境变量,java,ruby,windows,java-home,rjb,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 c:\Ruby192>肋骨 irb(主):001:0>放置环境['JAVA_HOME'] “c:\progra

尽管在Windows中设置JAVA_HOME变量似乎有很多问题和答案,但我并不完全确定我到底出了什么问题

我已经按照各种不同的说明设置了环境变量,当我在ruby中检查环境变量时,我得到了

c:\Ruby192>rib irb(main):001:0> puts ENV['JAVA_HOME'] "c:\progra~1\java\jdk1.6.0_20" => nil c:\Ruby192>肋骨 irb(主):001:0>放置环境['JAVA_HOME'] “c:\progra~1\java\jdk1.6.0\u 20” =>零 因此,我一直将其解释为正在设置的环境变量,返回jdk的路径,但是“nil”是什么

echo %JAVA_HOME% 回显%JAVA\u HOME% 还返回指向我的jdk的路径

当我跑的时候

gem install rjb gem安装rjb 我明白了

extconf.rb:39:in '(main)': JAVA_HOME is not a directory. (RuntimeError) extconf.rb:39:in'(main)':JAVA_HOME不是目录。(运行时错误) 当我查看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 javahome=ENV['JAVA_HOME'] 如果javahome.nil?&&RUBY_平台=~/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返回给您计算表达式的结果,即
put…
。Puts打印表达式,但Puts的返回值为零。它与
ENV['JAVA_HOME']
的内容无关。Nil只是意味着看跌期权返回Nil,这是完全正常的。试试
放上“hello”
,你会看到同样的结果

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

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

File.directory?('c:\progra~1\java\jdk1.6.0_20')

…看看你能得到什么。这条路看起来可疑地像某种MSDO想要的速记。也许你想用像
C:\Program Files\java\jdk1.6.0\u 20
这样的真品来代替它,看看
File.directory?()
是否会变得更快乐

编辑:

也可以在DOS提示符中尝试
dir%JAVA\u HOME%
。确保您确实将JAVA_的主页指向了它应该位于的位置