[英]Setting JAVA_HOME evironment variable in/for Ruby and RJB in windows
盡管似乎有一堆與在 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' 包含在路徑的末尾,因為一些回復說這是必要的,但我得到了相同的結果。
有什么建議么?
nil 只是 irb 將評估表達式的結果返回給您,即puts...
。 Puts 打印了您的表達式,但 puts 的返回值為 nil。 它與ENV['JAVA_HOME']
的內容無關。 Nil 只是意味着 puts 返回了 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 指向它應該在的位置。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.