Установка переменной среды JAVA_HOME в / для Ruby и RJB в ​​Windows - PullRequest
3 голосов
/ 07 июля 2011

Несмотря на то, что, похоже, есть куча вопросов и ответов, касающихся установки переменной JAVA_HOME в Windows, я не совсем уверен, где я ошибаюсь.

Я следовал разным инструкциям по установке переменной среды, и когда я проверяю переменную среды в 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

Итак, из того, что я могу сказать, либо ноль означает, что JAVA_HOME не найден, либо я не указываю на правильный путь или что-то в этом роде.

Я попытался включить '\ bin' в конец пути, так как в некоторых ответах говорилось, что это необходимо, но я получаю тот же результат.

Есть предложения?

1 Ответ

1 голос
/ 08 июля 2011

nil - это просто irb, возвращающий вам результат оценки вашего выражения, который был puts ....Путс напечатал ваше выражение, но возвращаемое значение пут - ноль.Это не имеет ничего общего с содержанием ENV['JAVA_HOME'].Ноль просто имел в виду ставит возвращается ноль, что совершенно нормально.Попробуйте 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?().

Редактировать:

Также попробуйте dir %JAVA_HOME% в командной строке DOS.Убедитесь, что вы действительно указываете свой JAVA_HOME туда, где он должен быть.

...