2011-07-07 11 views
3

WindowsでJAVA_HOME変数を設定することに関連した質問と回答がたくさんあるようですが、どこが間違っているのか完全にはわかりません。RubyとRJBのJAVA_HOME環境変数をウィンドウで設定する

、私は環境変数の設定の異なる命令のすべての種類を続いてきた、と私はルビーで環境変数をチェックするとき、私は

 
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% 

もパスをmy jdkに返します。

私は

 
gem install rjb 

を実行すると、私は確かに、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 

を持って

 
extconf.rb:39:in '(main)': JAVA_HOME is not a directory. (RuntimeError) 

を取得私は、JAVA_HOMEが見つからないことを意味するか、正しいパスか何かを指していないことを意味します。

パスの最後に '\ bin'を含めるようにしましたが、いくつかの応答は必要だと言われましたが、私は同じ結果を得ます。

提案がありますか?

答えて

1

nilは、式を評価した結果を返すだけのirbです。これは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 wannabe shorthandのように疑わしく見えます。たぶんC:\Program Files\java\jdk1.6.0_20のような本物のものに置き換えて、File.directory?()がもっと幸せになるかどうかを見たいかもしれません。

編集:

また、あなたのDOSプロンプトでdir %JAVA_HOME%を試してみてください。実際にあなたのJAVA_HOMEがどこにあるべきかを指していることを確認してください。

関連する問題