Как сделать JDK стандартным JRE?

Я использую Eclipse с ant скриптами, а Eclipse хорошо работает со стандартной установкой JRE в Windows XP.

Досада возникает, когда я хочу запустить компиляцию сценариев ant с javac-тегом, где он терпит неудачу, потому что в пути к классам нет.средства.

У меня появилась идея, что если я смогу превратить JDK в Java по умолчанию, то у меня будет то, что у меня есть сегодня, плюс ant работающий из коробки.

Можно ли это сделать? Что я пропустил в процессе установки?


Изменить: я знаю JAVA_HOME, но это утомительно и подвержено ошибкам (ручное обновление переменных среды, когда доступно более свежее JDK, не всегда то, что я помню).


Edit: Я закончил выяснять, как заставить javac-задачу использовать компилятор Eclipse (ecj.jar), который работает очень хорошо.


Изменить: Maven также поддерживает использование компилятора Eclipse, но это, как представляется, очень редко используется и со старой версией ecj.jar. Я намерен посмотреть на это позже.


Изменить: использование ecj с maven-compiler-plugin 3.0 работает очень хорошо и позволяет строить с помощью JRE.


Изменить: у меня были проблемы с сбоем инструмента javadoc при анализе байт-кода, генерируемого ecj.

Ответ 1

Ответ "нет", нет никакого способа сделать JDK стандартной JVM при установке.

Как указывают другие ответы, вы можете настроить свой путь и JAVA_HOME, чтобы они указывали на JDK или на другую JVM полностью. Это на самом деле то, что делает установка Java в первую очередь.

Однако ваша проблема в том, что вы хотите, чтобы tools.jar был найден. Для этого вы можете скопировать его в каталог ext под вашей JVM по умолчанию. Проверьте структуру файла JDK здесь. Это, вероятно, будет работать.

С другой стороны, если изменение переменных JAVA_HOME и PATH для Java кажется раздражающим, помните, что это всего лишь одна из тех вещей, которые мы делаем, чтобы держать нас в курсе just kidding, sucks that we still have to do this in 2009

Ответ 2

  • Загрузите JDK с веб-сайта
  • Как только все будет готово, перейдите в Панель управления
  • Открыть JAVA
  • Перейдите на вкладку Java и выберите Просмотреть
  • В списке будет один элемент. Измените Java-путь с JRE на загруженный JDK, например: C:\Program Files\Java\<your_jdk_version>\bin\java.exe.
    Например, мой выглядит следующим образом: C:\Program Files\Java\jdk1.7.0_07\bin\java.exe

Ответ 3

Копирование файла tools.jar в место, где Eclipse ищет его, может работать, но беспорядочно и хрупко, поскольку этот шаг вы не можете вспомнить при следующем обновлении JDK. Лучше убедить Eclipse искать его в нужном месте.

Установка JAVA_HOME в правильное место работает для некоторых инструментов, но Eclipse не соблюдает его.

Несколько вещей, чтобы попробовать:

  • Убедитесь, что ваш JDK указан и выбрано под Настройки- > Java- > Установленные JRE.

  • Убедитесь, что Ant вызывается JDK. Один ключ заключается в том, что в верхней части вывода консоли вы должны увидеть путь javaw.exe, который используемый. Если этот путь находится в JRE, более убедительным является необходимость. Проверьте Run- > Внешние инструменты- > Внешние инструменты Конфигурации → [ваш Ant build] → JRE и убедитесь, что настройки там укажите на JDK.

Ответ 4

Попробуйте изменить переменную среды JAVA_HOME, чтобы указать на JDK вместо JRE.

В качестве альтернативы или, возможно, дополнительно добавьте запись PATH в каталог bin JDK перед любым системным каталогом Windows.

Я подозреваю, что JAVA_HOME достаточно для работы Ant, но иногда приятно получить JDK-версию java и т.д. на пути, так что, когда вы просто запускаете java из командной строки, вы получите точно такая же версия, как при запуске javac.

Ответ 5

Вероятно, вы можете написать WSH script, чтобы автоматически перенастроить ваш путь.

Этот JScript script просто печатает некоторую информацию:

//file:  jdk.js              usage: cscript /Nologo jdk.js
var objShell = WScript.CreateObject("WScript.Shell");
function setJdk(version) {
  try {
    var jdk = objShell.RegRead("HKEY_LOCAL_MACHINE\\SOFTWARE\\" +
       "JavaSoft\\Java Development Kit\\" + version + "\\JavaHome");
    if(jdk != null && jdk != "") {
      jdk += "\\bin";
      var path = objShell.RegRead("HKEY_CURRENT_USER\\Environment\\Path");
      path = jdk + ";" + path;
      WScript.Echo("Could set PATH to " + path + "\n");
    }
  } catch(err) { /*probably key does not exist*/ }
}
setJdk("1.7");
setJdk("1.6");
setJdk("1.5");

Существует метод RegWrite, который можно использовать для записи в реестр. Существует небольшая работа, связанная с определением последней версии и перекодировкой пути, удалением устаревших записей и сортировкой системных и пользовательских маршрутов. Без сомнения, его можно было бы использовать для установки JAVA_HOME. Запись JDK должна появиться перед каталогом system32, поскольку установщик JRE помещает туда java.exe.

(Я не уверен на 100%, если оболочка будет получать такие изменения или потребуется перезагрузка какой-либо переменной.)

Ответ 6

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

Например, из командной строки или командного файла вы просто делаете что-то вроде:

set JAVA_HOME=C:\Program Files\Java\jdk1.6.0_14

Однако, чтобы установить JAVA_HOME навсегда, добавьте его в переменные среды на вкладке "Дополнительно" на странице свойств для "Мой компьютер".

Ответ 7

Очевидно, Eclipse может компилироваться без tools.jar. Я предполагаю, что у них есть специальная команда javac, которая может работать с JRE (а не JDK); это может быть причиной того, почему они могут перечислить свои предупреждения.

В любом случае, я бы пошел стандартным способом (как было предложено выше) и установить JDK в вашей системе. Вы даже можете запустить Eclipse с этим конкретным JDK (без изменения JAVA_HOME), отредактировав файл eclipse.ini (см. Инструкции ).

Ответ 8

Из-за этого это выполнимо. Не понимаю, почему люди ответили "Нет" на этот вопрос. Копирование через tools.jar не является мудрым способом, у меня была проблема при использовании eclipese, Просто добавьте jdk вместо jre в мой путь сборки, и он работает.

Вот подробности:

http://www.gamefromscratch.com/post/2011/11/15/Telling-Eclipse-to-use-the-JDK-instead-of-JRE.aspx