Затмение - нет Java (JRE) / (JDK)… нет виртуальной машины

278

Я пытаюсь заставить Eclipse v3.5 (Galileo) перезапуститься на моем компьютере - раньше я запускал его без проблем, но теперь продолжаю получать эту ошибку:

Java Runtime Environment (JRE) или Java Development Kit (JDK) должны быть доступны для запуска Eclipse. Виртуальная машина Java не была найдена после поиска в следующих местах: C: \ eclipse \ jre \ javaw.exe javaw.exe в вашем текущем PATH

Я только что сделал новую установку JDK и SDK.

У меня Windows 7 (x64).

Что с этим? Как мне это исправить?

Я не могу запустить ни один из ipconfig / tracert / или ping.

Wallter
источник
3
Java Runtime EnvironmentJRE не SDK ...
user85421
1
Установите JRE - это даст javaw.exe на вашем пути. JDK нет.
Торбьерн Равн Андерсен
12
@Carlos, каждый JDK приносит частную JRE.
Торбьерн Равн Андерсен
3
@ Thorbjørn: а какой смысл? Я знаю это, а также то, что JDK также представляет публичную JRE. Я написал, что «Java Runtime Environment - это не SDK», но вы должны прочитать исходное сообщение (перед тем, как его отредактировать 11 января), чтобы понять, почему я написал его: «Java Runtime Environment ( SDK ) или ...»
user85421
11
Если вы недавно установили JDK по другому пути после установки Eclipse, то вы можете столкнуться с этой проблемой. Это связано с тем, что в eclipse.ini жесткий код eclipse жестко кодируется путем JDK при его первоначальной настройке. Просто измените правильный путь JDK в eclipse.ini. Это должно решить эту ошибку.
Раджараман

Ответы:

221

Eclipse по умолчанию попытается запустить со значением по умолчанию " java.exe" (первое, на которое ссылается ваш PATH)

Три вещи, которые нужно запомнить:

  • «Установить» JRE или JDK можно так же просто, как разархивировать или скопировать их с другого компьютера: никаких специальных действий по установке не требуется, и вы можете иметь столько разных версий JVM (1.4, 5.0, 6.0 ...), сколько вам нужно "Установлено" (скопировано) практически в любом месте на вашем диске.
  • Я бы рекомендовал всегда запускать Eclipse с самой последней возможной JRE (чтобы извлечь выгоду из последних эволюций горячих точек ). Ты можешь:
  • JVM, на которую вы будете ссылаться в сеансе Eclipse, не всегда используется для запуска Eclipse, потому что:
    • Вам нужен только JRE для запуска Eclipse, но после запуска Eclipse вы должны зарегистрировать JDK для своих проектов (особенно для исходников Java и в целях отладки, также в теории для компиляции, но Eclipse имеет свой собственный компилятор Java). Примечание. JRE в Eclipse, потому что этого достаточно для запуска вашей программы, но опять-таки JDK позволит выполнять больше операций.
    • Несмотря на то, что по умолчанию зарегистрированный Java в Eclipse используется для запуска сеанса, вы можете зарегистрировать более старый SDK (включая не Sun), чтобы запускать / отлаживать ваши программы с JRE, аналогичным тому, который будет на самом деле использоваться в производстве.

Установленные JRE


Июнь 2012, комментарии jmbertucci :

Я использую 64-разрядную версию Windows 7, и у меня установлена ​​32-разрядная версия JRE. Я скачал Eclipse 64-bit, которая ищет 64-битную JRE. Поскольку у меня не было 64-битной JRE, это выдало ошибку, что имеет смысл.

Я перешел на страницу установки Java вручную (которая была не так доступна напрямую, как вам хотелось бы) и установил 64-битную версию. См. « Загрузки Java для всех операционных систем ». Это было все, что мне было нужно.


Апрель 2016: Стив Мэйн добавляет в комментариях :

Я должен был отредактировать eclipse.ini файл так, чтобы он ссылался на правильный путь Java - Eclipse вообще не использует среду, PATHкогда есть значение в eclipse.ini.

VonC
источник
42
Этот вопрос / ответ немного стар, но я столкнулся с этой проблемой, поэтому я опубликую свои заметки. Я использую Win7 64bit, и у меня была установлена ​​32bit JRE. Я скачал Eclipse 64bit, который ищет 64-битную JRE. Поскольку у меня не было 64-битного JRE, это выдало ошибку, что имеет смысл. Я перешел на страницу установки Java вручную (которая была не так доступна напрямую, как хотелось бы) и установил 64-битную версию. java.com/en/download/manual.jsp Это было все, что мне было нужно.
jmbertucci
2
@Nuktu: Я добавил комментарий jmbertucci к ответу
VonC
@jmbertucci: спасибо за ваши заметки. Я добавил их в ответ для большей наглядности.
VonC
2
@VonC Мне пришлось отредактировать файл eclipse.ini, чтобы он ссылался на правильный путь Java - Eclipse вообще не использует среду PATH, когда есть значение в eclipse.ini
Стив Мэйн,
1
@ SteveMayne Интересно, спасибо. Я включил ваш комментарий в ответ для большей наглядности.
VonC
141

Просто скопируйте этот файл:

c:/Program Files/Java/jre(5,6,7..any version)/bin/javaw.exe

затмить папку

* Примечание проверено только для Windows

Замена javaw.exe в папке Eclipse

Youans
источник
Я искал простое решение в качестве этого ответа, но оно не сработало для меня, в случае, если у кого-то есть похожая ситуация, может помочь изменение каталога vm в файле eclipse.ini .
Ноха Карим
3
Не работает для меня, выдал ошибку: открытие ключа реестра «Software \ Javasoft \ Java Runtime Environment». Мне пришлось скопировать всю папку jre7 (в моем случае) в каталог Eclipse и переименовать ее в jre. Тогда это сработало.
CuriousMarc
Если кто-то потерпит неудачу, попробуйте скопировать папку jre в папку eclipse.
Артур Жисинь Лю
@NohaKareem твой совет был самым близким для меня. К сожалению, моя папка «jre» содержала только «lib», поэтому копирование в папку Java «jdk» (хотя она и была больше 350 МБ, но имела внутреннюю папку «bin») и переименование ее в «jre» работало. Спасибо.
Mindsect Team
Если установлены как 32-, так и 64-битная Java, но 32-битная Java в пути, попытка открыть 64-битное затмение не удастся, и 64-битный файл javaw рядом с exclipse заставит его работать.
DiamondDrake
83

Все остальные ответы на вопросы о настройке толькоJAVA_HOME не совсем верно. Затмение именно не советовалосьJAVA_HOME . Посмотрите ближе на сообщение об ошибке:

... в вашем текущем ПУТИ

Буквально сказано PATH, а неJAVA_HOME .

Щелкните правой кнопкой мыши « Мой компьютер» и выберите « Свойства» (или нажмите « WinkeyPause), перейдите на вкладку « Дополнительно» , нажмите кнопку « Переменные среды» , в списке « Системные переменные» внизу выберите Path(нет, нет Classpath ), нажмите « Редактировать и добавить».;c:\path\to\jdk\bin в конец значения.

В качестве альтернативы, а если нет, вы также можете добавить JAVA_HOMEпеременную окружения и использовать ее в PATH. В том же диалоге нажмите New и добавьте JAVA_HOMEсо значением c:\path\to\jdk. Затем вы можете добавить ;%JAVA_HOME%\binв конец значения Pathнастройки.

BalusC
источник
2
Это не сработало :) данные имени среды: путь --- значение: C: \ Program Files (x86) \ Java; C: \ Program Files (x86) \ Java \ jdk1.6.0_14 \ bin
Wallter
1
Пути с пробелами должны быть заключены в кавычки.
BalusC
Мой путь был настроен идеально настроенным ранее, компилятор Borland отредактировал поле пути и заменил путь Java своим собственным путем, теперь его Fixed, спасибо !!!
Ахиль Джайн
1
@BalusC На самом деле, нет необходимости заключать пути в кавычки при настройке переменных среды PATH в Windows. Достаточно просто разделить их точкой с запятой ( ;).
informatik01
это ответ, который решает это. после нескольких часов копания, для тех, у кого такая же проблема, вам нужно: 1) убедиться, что все 64-битно. Должны автоматически устанавливаться в «программные файлы», а не «программные файлы (x86)». 2) Запишите -VM в папку bin, которую имеют другие ответы. 3) Установите путь, как сказал этот парень. Ничего не произойдет, если вы не можете запустить Java из командной строки. 4) радуйтесь
triplebig
36

Откройте «Свойства системы» Windows с панели управления и найдите раздел переменных среды:

  • Добавьте запись JAVA_HOME, указывающую на каталог, в котором установлен JDK (например, C: \ Program Files \ Java \ jre6)
  • Найдите запись Path и добавьте в конец следующее:% JAVA_HOME% \ bin
  • Ок изменения
  • Перезапустите затмение, чтобы оно знало о новой среде

Большинство инструментов Java теперь смогут найти вашу установку Java либо с помощью переменной среды JAVA_HOME, либо путем поиска java.exe / javaw.exe в переменной среды Path.

Роб Оксспринг
источник
3
Когда я добавил имя: значение JAVA_HOME: "C: \ Program Files (x86) \ Java \ jdk1.6.0_14;% JAVA_HOME% \ bin", я все еще получаю ту же ошибку
Wallter
24

Если вы загружаете 64-битную версию Eclipse; он будет искать 64-битную версию JRE. Если вы загружаете 32-битную версию Eclipse; он будет искать 32-битную версию JRE

Я установил 32- и 64-разрядную версию JRE. Вы можете получить это с сайта SUN Oracle. Сайт JAVA, кажется, автоматически устанавливает 32-битную версию Java. Я думаю, это из-за веб-браузера.

speedbaron
источник
2
Как сказал Ладуки, проблема, скорее всего, заключалась в том, что браузер запускал некорректный код на веб-сайте Java и получал неправильную версию JAVA ...
Wallter
1
Спидбарон полностью здесь. Если вы изменяете переменную среды PATH, убедитесь, что вы указали правильный путь. В моей 64-битной системе Windows 7 была установлена ​​32-битная JRE (не знаю почему), поэтому я установил 64-битную версию и добавил в PATH новый каталог. Кажется, сейчас хорошо работает.
musicliftsme
1
Это была моя проблема. Обратите внимание, что Windows устанавливает 64-битные C:\Program Files\Javaи 32-битные версии C:\Program Files (x86)\Java.
Styfle
10

Оказалось, что все, что мне нужно было сделать, это изменить «путь» на:

"C: \ Windows \ system32; C: \ Windows; C: \ Windows \ System32 \ Wbem; C: \ Program Files (x86) \ Java; C: \ Program Files (x86) \ Java \ jdk1.6.0_14 \ bin "

это сделал :)

Wallter
источник
1
Кстати, вы должны использовать JDK1.6.0_16 или более поздней версии. Используя jdk 1.6.0_14, вы не можете правильно использовать точки останова в Eclipse: bugs.eclipse.org/bugs/show_bug.cgi?id=279137
Csaba_H
9

У меня Windows 7 64-битная, и у меня была такая же проблема с затмением. Чтобы заставить его работать, мне пришлось использовать Internet Explorer (64-битная версия) для загрузки Java. Это был единственный способ получить Java для установки 64-битной версии. Когда я использовал Firefox для установки Java, он автоматически установил 32-битную версию (так идиотично!). И 64-разрядная версия Eclipse не обнаружит 32-разрядную версию Java.

ladookie
источник
У меня больше нет проблемы - но это кажется хорошим решением и имеет смысл - было бы интересно проверить это с другими 64-
битными
7

Решение в двух словах:

Щелкните правой кнопкой мыши на «Мой компьютер», выберите «Свойства», затем «Дополнительные параметры системы», откроется окно «Свойства системы», на вкладке «Дополнительно» выберите переменные среды, откроется окно «Переменные среды», в разделе «Системные переменные» найдите PATHпеременную и измените значение. изменив его (версию; jre6, jre7 и т. д.) на тот, который вы используете, например, для моего:C:\Program Files\Java\jre7\bin

siaooo
источник
7

Не полагайтесь на переменную пути Windows, потому что она изменяется почти при каждом обновлении. Например, обновление chrome (32-разрядное на 64-разрядной машине) заменяет общесистемную 64-разрядную JVM 32-разрядной JVM. Также обратите внимание, что эта запись должна быть последней в файле eclipse.ini, в противном случае она не работает, и, как указано иное, переменная JAVA_HOME НЕ оценивается программой eclipse.exe.

даже если у вас настроены JAVA_HOME и Path, они могут иметь эту проблему, поэтому самый простой способ сделать это - открыть файл eclipse.ini в папке установки eclipse

-vm

C: \ Program Files \ Java \ jdk1.7.0_71 \ bin \ javaw.exe

замените C: \ Program Files \ Java \ jdk1.7.0_71 \ bin \ javaw.exe на путь jdk или jre `.

лучник хан
источник
Я голосую за правильный ответ. Не полагайтесь на переменную пути Windows, потому что она изменяется почти при каждом обновлении. Например, обновление chrome (32-разрядное на 64-разрядной машине) заменяет общесистемную 64-разрядную JVM 32-разрядной JVM. Также обратите внимание, что эта запись должна быть последней в eclipse.ini, иначе она не будет работать. И - как указано иное - переменная JAVA_HOME НЕ оценивается программой eclipse.exe. Пожалуйста, измените ваш ответ соответственно.
Хери
Это лучший ответ, поскольку он напрямую решает актуальную проблему. Eclipse ищет путь для определенного параметра, и это значение неверно ... поэтому исправление значения устраняет проблему.
BuvinJ
6

В вашем eclipse.iniфайле вам нужно обновить путь к виртуальной javaw.exeмашине, чтобы он указывал на то же место, где установлено на вашем компьютере.

Лавакумар Сангитхем
источник
6

Не волнуйтесь, я был также разрушен этой ошибкой и фатальной, и когда я получил ее, я был так расстроен, даже когда я хотел оставить программирование на Android, но я понял, просто сначала скопируйте этот код и вставьте в системную переменную Под тропой ...

C: \ Program Files; C: \ Winnt; C: \ Winnt \ System32; C: \ Program Files \ Java \ jre6 \ bin \ javaw.exe

Теперь скопируйте папку "JRE" из вашего пути, как у меня есть "JRE" по этому пути

            C:\Program Files\Java

и вставьте его в папку eclipse, где находится файл eclipse.exe. как будто у меня есть затмение в этом месте

    F:\Softwares\LANGUAGES SOFTEARE\Android Setup\eclipse

Так что внутри папки затмения вставьте «JRE» ПАПКУ. Если у вас есть «jre6», переименуйте его в «jre» .... и запустите затмение, и вы получите решение ...

   //<<<<<<<<<<<<<<----------------------------->>>>>>>>>>>>>>>>>>>                 

ДРУГОЕ РЕШЕНИЕ: 2

Если проблему не удалось решить с помощью описанных выше шагов, выполните следующие действия.

  1. Скопируйте папку "jre" из вашего пути Java, например C: \ Program Files \ Java \ jre6 * и т. Д., И вставьте ее в каталог затмений (где доступно ваше затмение)
  2. Перейдите к файлу eclipse.ini, откройте его.
  3. Измените каталог вашего файла javaw.exe следующим образом

-vmF: \ Softwares \ ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ ЯЗЫКОВ \ Настройка Android \ eclipse Indigo version 32 Bit \ jre \ bin / javaw.exe

Теперь, когда вы запустите eclipse, он будет искать javaw.exe, поэтому он будет искать путь в файле eclipse.ini, так как он находится сейчас в той же папке, поэтому он запустит javaw.exe и начнет работать ,

Если у вас все еще есть запрос, вы можете задать его снова, просто зайдите в мой профиль и узнайте мой электронный идентификатор. потому что я люблю форум переполнения стека, и это сделало меня программистом. *

Пир Фахим Шах
источник
5

Отредактировал мой файл eclipse.ini, чтобы обновить недавно обновленный JDK. Ранее у меня был jdk1.7.0_09 и теперь он обновлен до jdk1.7.0_80, и затмение выдало эту ошибку.

Java Runtime Environment (JRE) или Java Development Kit (JDK) должны быть доступны для запуска Eclipse. Виртуальная машина Java не была найдена после поиска в следующих местах: C: / Program Files / Java / jdk1.7.0_09 / bin / javaw

После обновления eclipse.ini из

-vm
C:/Program Files/Java/jdk1.7.0_09/bin/javaw

в

-vm
C:/Program Files/Java/jdk1.7.0_80/bin/javaw

Затмение работает отлично.

Счастливый
источник
1
Это решение, которое сработало для меня - спасибо Лаки. Eclipse загружает JRE, на который есть ссылка в INI-файле, поэтому принятый ответ неверен, так как он указывает на PATH env.
Стив Мэйн
3

если после добавления C: \ Program Files \ Java \ jdk1.8.0_92 \ bin в переменную PATH в переменные окружения, затмение выдало ту же ошибку

проверьте файл настроек конфигурации eclipse, который находится в папке eclipse, вы должны увидеть тот же путь jdk, что и в C: \ program Files

введите описание изображения здесь

Я надеюсь, что это поможет.

Абдельрахман Элаттар
источник
2

Когда у меня возникла такая проблема, в моем случае у меня была установлена ​​x64 JDK + JRE с x86 Eclipse. Так что установка x86 JDK + JRE решила мою проблему :) Также я создал jreпапку в папке eclipse и скопировал binпапку из моего локального пути C:\Program Files (x86)\Java\jre7в ..\eclipse\jre\.

Игорь Лозовский
источник
2
  • 64-битная ОС -> вам нужно: 64-битная Java и 64-битная Eclipse
  • 32-битная ОС -> вам нужно: 32-битная Java и 32-битная Eclipse

если вы обновите версию Java с помощью обновления по умолчанию на вашем 64-битном компьютере (и у вас 32-битный браузер ), java установит 32-битную версию. Вы должны найти 64-битную версию Java и установить ее.

Илкер Эльсора
источник
1

У меня был сотрудник с этой проблемой на прошлой неделе. Он исправил это, установив версию Eclipse для x64 и JDK для x64.

Изменить: он повторно использовал свое старое рабочее пространство после установки необходимых плагинов, так что не должно быть большой проблемой

Лора
источник
1

Есть более простой способ сделать это. Просто запустите cmd x64. Введите cmd x64 в строку поиска в меню «Пуск», и вы найдете его :) Или, в качестве альтернативы, вы должны указать путь к программным файлам (x86) ... Например, C: \ Program Files (x86) \ Java \ jre6

Дейвидас М
источник
1

Просто добавьте JRE PATH FOR Ex: C: \ Program Files \ Java \ jre5 \ bin в переменную среды. Поставьте ";" между каждым путем. Затем нажмите eclipse.exe, он будет работать .....

Картик
источник
1

Причина, по которой вы получаете эту ошибку, заключается в том, что для запуска eclipse требуется JRE, которое он не может найти. Сначала он ищет текущий каталог, затем файл eclipse.ini и, наконец, системный путь. Так что, если он не может найти правильный jvm (битовые версии различаются) в любом из этих трех мест, он выводит

Рекомендуемый способ - отредактировать файл eclipse.ini и указать eclipse, где именно искать vm / jre, включив эту строку в файл:

-vm
[путь к вашему java.exe] (который обычно находится в «C: \ Program Files \ Java \ jre7 \ bin»)

PS Чтобы отредактировать eclipse.ini, вам может понадобиться переместить его, отредактировать, а затем вставить обратно

Источник: - вики

user1995120
источник
1

Прежде всего, спасибо YouYou за его решение! Я пытался ответить на YouYou ( https://stackoverflow.com/a/14464653/801919 ). Изначально это не сработало для меня. Ниже приведены шаги, которые мне нужно было сделать, чтобы это заработало:

  1. Изначально на моей новой машине не было Java. Итак, мне пришлось установить это (скачано с: http://java.com/en/download/manual.jsp ).
  2. Я использую 64-битную ОС. Но во время загрузки я получил сообщение, которое может помочь мне выбрать версию Java для загрузки:Choose the 32-bit download to use with a 32-bit browser. следовательно, я загрузил 32-разрядную версию.
  3. Затем я следовал процедуре, упомянутой в https://stackoverflow.com/a/14464653/801919 , в надежде получить решение.
  4. Я получил другую ошибку: Java was started but returned exit code=13
  5. Затем я установил 64-битную версию Java.
  6. Скопировано javaw.exeиз этой версии.

... и Eclipse начал работать !!! Yaay!

Викрам
источник
1

Ну, этот ответ для тех, кто попробовал все остальные, но все еще не повезло, может, это Android-студия или Eclipseя обычно делаю это, когда все остальное терпит неудачу.

  1. Найдите папку Android SDK и откройте файл android.bat в текстовом редакторе.
  2. вы найдете несколько таких команд в начале файла,

set java_exe=

call lib\find_java.bat

if not defined java_exe goto :EOF

  1. Измените их на

    set java_exe=< путь к файлу java.exe (можно найти в папке jdk folder / bin) >

  2. найти линии

rem Set SWT.Jar path based on current architecture (x86 or x86_64) for /f "delims=" %%a in ('"%java_exe%" -jar lib\archquery.jar') do set swt_path=lib\%%a

  1. Замените его на set swt_path=< путь к соответствующему файлу swt.jar, для x86 он находится в sdk \ tools \ lib \ x86, а для x64 - в sdk \ tools \ lib \ x86_64 >
  2. Сохраните и закройте файл, и теперь вы готовы.
страдающий бессонницей
источник
1

Попробуйте установить JAVA_HOME в правильную папку. Google для установки переменных среды в Windows.

Topher Fangio
источник
Я следовал этим инструкциям: wso2.org/project/wsas/java/2.0-beta/docs/setting-java-home.html, но безрезультатно
Уолтер
Ненавижу это говорить ... но ты перезапустил?
Topher Fangio
Перезапуск не требуется для установки Java.
Торбьерн Равн Андерсен
1
JAVA_HOME также не требуется. Это путь, который используется для поиска javaw.exe. (JAVA_HOME используется некоторыми другими приложениями, такими как ant, так что в любом случае его установка не является ошибкой)
user85421
1

Я тоже столкнулся с этой проблемой. Мой случай выглядит следующим образом:

введите описание изображения здесь введите описание изображения здесь

В тексте:

HKEY_CURRENT_USER\Environment
    Path    REG_SZ    %JAVA_HOME%\bin;C:\ProgramFiles\nodejs

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment
    JAVA_HOME    REG_SZ    C:\ProgramFiles\Java\jdk
    Path    REG_EXPAND_SZ    C:\bin;%SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem;%SYSTEMROOT%\System32\
WindowsPowerShell\v1.0\;C:\Program Files\Intel\DMIX;c:\Program Files (x86)\Microsoft SQL Server\90\Tools\binn\;C:\Progra
m Files (x86)\Perforce;C:\ProgramFiles\010 Editor;C:\Program Files\Microsoft SQL Server\130\Tools\Binn\;C:\ProgramFiles\
Git\cmd;C:\Program Files (x86)\Skype\Phone\

C:\Users\ssfang> echo %^JAVA_HOME% = "%^JAVA_HOME%" = %%JAVA_HOME%% %JAVA_HOME%
%JAVA_HOME% = "%^JAVA_HOME%" = %C:\ProgramFiles\Java\jdk% C:\ProgramFiles\Java\jdk

Я обнаружил, что их типы значений реестра Pathразличны, поэтому я проверил, является ли путь действительным или нет, с помощью следующей команды:

C:\Users\ssfang> where node java
C:\ProgramFiles\nodejs\node.exe
INFO: Could not find "java".

В результате я сбрасываю локальную (текущую пользовательскую) среду с помощью следующих команд ( Setx ):

C:\Users\ssfang> setx PATH %^JAVA_HOME%\bin;"C:\ProgramFiles\nodejs"

SUCCESS: Specified value was saved.

C:\Users\ssfang> reg query HKEY_CURRENT_USER\Environment /v Path

HKEY_CURRENT_USER\Environment
    Path    REG_EXPAND_SZ    %JAVA_HOME%\bin;C:\ProgramFiles\nodejs

C:\Users\ssfang> where node java
C:\ProgramFiles\nodejs\node.exe
INFO: Could not find "java".

C:\Users\ssfang>echo %PATH%
C:\bin;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Program Fi
les\Intel\DMIX;c:\Program Files (x86)\Microsoft SQL Server\90\Tools\binn\;C:\Program Files (x86)\Perforce;C:\ProgramFile
s\010 Editor;C:\Program Files\Microsoft SQL Server\130\Tools\Binn\;C:\ProgramFiles\Git\cmd;C:\Program Files (x86)\Skype\
Phone\;%JAVA_HOME%\bin;C:\ProgramFiles\nodejs

Но в текущем процессе он не может распространить эти изменения на другие запущенные процессы.

Однако, если вы напрямую измените переменные среды пользователя в редакторе реестра,

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

Чтобы внести эти изменения без выхода из системы, передайте сообщение WM_SETTINGCHANGE всем окнам системы, чтобы любые заинтересованные приложения (такие как Windows Explorer, Диспетчер программ, Диспетчер задач, Панель управления и т. Д.) Могли выполнить обновление.

Подробности см. В разделе Как распространять переменные среды в системе.

Здесь я даю сценарий powershell для этого:

# powershell -ExecutionPolicy ByPass -File
# Standard, inline approach: (i.e. behaviour you'd get when using & in Linux)
# START /B CMD /C CALL "foo.bat" [args [...]]
# powershell -ExecutionPolicy ByPass -WindowStyle Hidden -File myScript.ps1 


<#
Add-Type @'

public class CSharp
{
    public static void Method(object[] first, object[] second)
    {
        System.Console.WriteLine("Hello world");
    }
}
'@
$a = 1..4;
[string[]]$b = "a","b","c","d";
[CSharp]::Method($a, $b);
#>


<#

#http://stackoverflow.com/questions/16552801/how-do-i-conditionally-add-a-class-with-add-type-typedefinition-if-it-isnt-add

#Problem Add-Type : Cannot add type. The type name 'PInvoke.User32' already exists.

if (-not ("MyClass" -as [type])) {
    add-type @"
    public class MyClass { }
"@
}


p.s. there's no Remove-Type; see this answer for more on how to best work around this limitation:
http://stackoverflow.com/questions/3369662/can-you-remove-an-add-ed-type-in-powershell-again

I think it will be wanted when debugging.
It is much simpler to close a tab in Console and open new one in PowerShell_ISE.exe or close PowerShell.exe.

Or

Start-Job -ScriptBlock {
    param([uri]$url,$OutputDir)
    # download and save pages
    Invoke-RestMethod $url | Out-File "$OutputDir\$($url.Segments[-1])" -Force
} -ArgumentList $link,$OutputDir

#>
if (-not ([System.Management.Automation.PSTypeName]'PInvoke.Program').Type)
{
    $sig=@"
using System;
using System.Runtime.InteropServices;
using System.Text;
using System.Collections.Generic;

// The global namespace is the "root" namespace: global::system will always refer to the .NET Framework namespace System.

///P/Invoke (Platform Invoke)
namespace PInvoke
{
    public static class User32
    {
        /// http://www.pinvoke.net/default.aspx/Constants/HWND.html
        // public const IntPtr HWND_BROADCAST = new IntPtr(0xffff);
        /// https://msdn.microsoft.com/en-us/library/windows/desktop/ms725497(v=vs.85).aspx
        /// http://www.pinvoke.net/default.aspx/Constants/WM.html
        public const UInt32 WM_SETTINGCHANGE = 0x001A;

        // SendMessageTimeout(HWND_BROADCAST, WM_SETTINGCHANGE, 0,    (LPARAM) "Environment", SMTO_ABORTIFHUNG,    5000, &dwReturnValue);

        /// https://msdn.microsoft.com/en-us/library/windows/desktop/ms644952(v=vs.85).aspx
        /// If the function succeeds, the return value is nonzero. 
        [System.Runtime.InteropServices.DllImport("user32.dll", EntryPoint = "SendMessageTimeout", SetLastError = true)]
        public static extern uint SendMessageTimeout(IntPtr hWnd, uint Msg, int wParam, string lParam, SendMessageTimeoutFlags fuFlags, uint uTimeout, out int lpdwResult);
    }

    [Flags]
    public enum SendMessageTimeoutFlags : uint
    {
        SMTO_NORMAL = 0x0,
        SMTO_BLOCK = 0x1,
        SMTO_ABORTIFHUNG = 0x2,
        SMTO_NOTIMEOUTIFNOTHUNG = 0x8,
        SMTO_ERRORONEXIT = 0x20
    }

    public class Program
    {
        public static void Main(string[] args)
        {
            //int innerPinvokeResult;
            //uint pinvokeResult = User32.SendMessageTimeout(User32.HWND_BROADCAST, User32.WM_SETTINGCHANGE, 0, "Environment", SendMessageTimeoutFlags.SMTO_NORMAL, 1000, out innerPinvokeResult);
            Console.WriteLine("Over!!!!!!!!!!!!!!!!!!!!!!!!!");
        }
    }
}
"@

    Add-Type -TypeDefinition $sig
}


## [PInvoke.Program]::Main([IntPtr]::Zero);

$innerPinvokeResult=[int]0
[PInvoke.User32]::SendMessageTimeout([IntPtr]0xffff, [PInvoke.User32]::WM_SETTINGCHANGE, 0, "Environment", [PInvoke.SendMessageTimeoutFlags]::SMTO_NORMAL, 1000, [ref]$innerPinvokeResult);

Setx setx [/ s [/ u [] [/ p []]]] [/ m]

/m Specifies to set the variable in the system environment. The default setting is the local environment
SAMM
источник
0

Проверьте Window> Preferences> Java> Установленные JRE. Убедитесь, что там что-то есть; если нет, добавьте один.

Вы недавно обновили свой JDK?

Дрю Уиллс
источник
Да, я пытался добавить дополнение Android. Но нет (как сказал Topher Fangio), я не могу начать Eclipse сейчас.
Wallter
0

JDK не устанавливает JVM в путь по умолчанию.

Если вам не нужны внешние инструменты для работы как ant, для запуска Eclipse достаточно не-JDK. Самый простой способ установить такую ​​JVM - это зайти на сайт http://java.com и позволить ему установить то, что он хочет установить.

Затем дважды щелкните двоичный файл Eclipse еще раз.

Турбьерн Равн Андерсен
источник
Я переустановил его (он даже спросил, хочу ли я переустановить его) безрезультатно. (Я сделал плагин для Google Chrome 14 - или что-то в этом роде && Firefox)
Wallter
Вы пошли на java.com? Не javasoft.com?
Торбьерн Равн Андерсен
0

установите переменную JAVA_HOME и ad JAVA_HOME / bin в переменную пути расширения.

scienty
источник
как это: "C: \ Program Files (x86) \ Java; C: \ Program Files (x86) \ Java \ jdk1.6.0_14 \ bin"? - это все еще не работает :)
Wallter
Ссылка на JAVA_HOME в переменной пути требует его встраивания:% JAVA_HOME% \ bin
Heri
Для меня (Windows 10 64 bit + Eclipse 4.10) хитрость заключалась в том, чтобы добавить, помимо JAVA_HOMEпеременной среды, JRE_HOMEпеременную, которая была установлена ​​в местоположение javaw.exeрасположения (которое, вероятно, всегда является папкой bin в JDK, которая установлена ).
Гай Авраам
0

У меня была та же проблема (Windows 7 x64, 64-битная JDK, 32-битная Eclipse), и я нашел 2 решения:

  • Установите 64-разрядную версию Eclipse (ее можно найти, щелкнув вкладку «Сборки разработки» на странице загрузок).
  • Установите 32-битную версию JDK.
Тим
источник
Видите ли, но вы использовали Windows 7 x86, где я использовал x64 - поскольку другие утверждали, что эта проблема, возможно, была ошибкой со стороны SUN в их программировании того, как их веб-страница «определяет версию» (то есть x64 или x86), которую вы следует использовать
Wallter
Исправление, я использовал Windows 7 x64
Тим
0

У меня такая же проблема. Самый простой способ исправить это - установить JRE и eclipse как x86 или x64. Когда их битовый тип не совпадал, затмение не могло его найти. Так что, если для вас не имеет большого значения удалить и переустановить, чтобы привести их в соответствие, я бы сделал это.

Я закончил установку: Java Runtime Environment 1.7.0.3 (64-разрядная версия) и Eclipse Indigo (3.7) (64-разрядная версия)

Тогда это просто работает.

Лорен С Фортнер
источник
0

Когда я копировал только javaw, произошла вторая ошибка, нет файла java.dll, когда я тоже копировал его, eclipse не запустился, я сделал то, что скопировал всю папку jdk в папку eclipse и переименовал id в jre. Задача решена.

Матей Шипка
источник