簡體   English   中英

在 windows 中為 Ruby 和 RJB 設置 JAVA_HOME 環境變量

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM