Why is java -version returning a different version to the one defined in JAVA_HOME?
My JAVA_HOME is set to C:\bea\jdk150_10\bin (Java 1.5). Тем не менее, когда я бегу java -version Я получаю следующее:
java version "1.6.0_22"
Java(TM) SE Runtime Environment (build 1.6.0_22-b04)
Java HotSpot(TM) Client VM (build 17.1-b03, mixed mode, sharing)
How can I use the 1.5 version?
14 ответов
Как уже упоминал Микель , в вашей машине Java взята из C:\Windows\System32\java.exe ,
Измените путь в переменных системного окружения, как упомянул Джон Т.
И изменить его есть C:\bea\jdk150_10\bin до %SystemRoot%\system32 в пути.
Бежать
where java
в вашей командной строке.
В моей системе это напечатало что-то совершенно неожиданное:
C:\Users\Mikel>where java
C:\Windows\System32\java.exe
Проверка там действительно есть Java:
C:\Users\Mikel>c:\windows\system32\java.exe -version
java version "1.6.0_22"
Java(TM) SE Runtime Environment (build 1.6.0_22-b04)
Java HotSpot(TM) Client VM (build 17.1-b03, mixed mode, sharing)
Таким образом, одним из решений является обеспечение того, чтобы предпочитаемая вами Java находилась в PATH C:\Windows\System32,
Я также попытался заглянуть в панель управления Java, чтобы увидеть, если она управляет версией в C:\Windows\System32, но я мог только просматривать настройки, а не редактировать их. Может, у тебя это работает?
Изменить PATH переменная, не JAVA_HOME ,
См. Документацию Java по настройке или изменению переменной PATH .
Пуск -> Панель управления -> Система -> Дополнительно
Нажмите на Переменные среды, под Системные переменные, найдите
PATHи нажмите на него.В окнах редактирования измените
PATHдобавив местоположение класса к значению дляPATH, Если у вас нет предметаPATHВы можете добавить новую переменную и добавитьPATHкак имя и местоположение класса в качестве значения.Закройте окно.
Снова откройте окно командной строки и запустите свой код Java.
Перейдите в расширенные настройки переменных среды и отредактируйте переменную пути. Какую бы версию Java вы не хотели, просто поднимите этот путь выше всех других переменных среды других версий Java.
Не все приложения используют JAVA_HOME чтобы получить версию JDK. Как уже говорилось, некоторые из них используют %SystemRoot%\System32\java.exe, Ты можешь сделать %SystemRoot%\java.exe -version чтобы увидеть, что это за версия.
Что я должен добавить к другим ответам, так это то, что если вы строите с Maven, M2_HOME\bin также должно быть раньше %SystemRoot% для того, чтобы Maven использовал правильный JAVA_HOME версия.
JAVA_HOME не должен указывать на корзину!
SET "JAVA_HOME = C: \ bea \ jdk150_10" SET "PATH =% JAVA_HOME% / bin;% PATH%"
Также убедитесь, что путь к JAVA_HOME правильный! Если есть опечатка и C:\Windows\System32\ находится в вашем пути, тогда этот java.exe будет запускаться вместо того, который вы указали.
Я была такая же проблема. Делая это, я решил проблему.
В Windows 8 или 10 вам нужно удалить "C:\ProgramFile\Oracle\Java\javapath" из пути в переменной среды.
Это может решить проблему.
Я столкнулся с той же проблемой. Позже я обнаружил, что виновником была Java 8. Раньше я устанавливал Java 8, но теперь нет папки для Java 8, и мой JAVA_HOME установлен на jre7, но все же я столкнулся с проблемой выше.
решение
Я удалил присутствующий javapath в C: \ ProgramData \ Oracle \ Java. Теперь моя система работает нормально. Это также решило мою проблему запуска затмения.
Мне нужно использовать как jdk 7, так и jdk 8 на моем компьютере с Windows 10. Хотя %JAVA_HOME% определен как jdk8, команда java -version показывает jdk 1.7, и я не могу запускать приложения, необходимые для jdk8, такие как Eclipse Oxygen.C:\Program Files (x86)\Common Files\Oracle\Java\javapath удаляется из переменной пути в системной среде, а также файлы java.exe, javaw.exe и javaws.exe удаляются в System32. Значение версии Java в системном реестре — 1,8. Решение очень простое. Просто удалите значение JAVA_HOME в системной среде, а затем определите его снова.
Разработчик использует путь разработчика. Вы можете заглянуть в файл idea.bat и добавить строку ниже, чтобы указать любую JRE перед ее запуском, как показано ниже:
...
IF "%JRE%" == "" (
IF EXIST "%JDK_HOME%" (
SET "JRE=%JDK_HOME%"
) ELSE IF EXIST "%JAVA_HOME%" (
SET "JRE=%JAVA_HOME%"
)
)
**SET JRE=<YOU WANT>**
SET "JAVA_EXE=%JRE%\bin\java.exe"
IF NOT EXIST "%JAVA_EXE%" (
ECHO ERROR: cannot start IntelliJ IDEA.
ECHO No JRE found. Please make sure IDEA_JDK, JDK_HOME, or JAVA_HOME point to a valid JRE installation.
EXIT /B
)
...
Но вам нужно установить для него JDK очень высокой версии, поскольку на самом деле IDEA хочет, чтобы мы использовали автономную Java, но версия намного выше той, которую обычно использовал разработчик. Таким образом, он будет содержать одну версию JDK, подходящую для IDEA, и добавить одно свойство ENV, например %IDEA_JDK%, и указать его при установке IDEA.
НО, если вы не выполнили весь процесс при установке или обновлении IDEA (например, у вас не было разрешения, и он также будет установлен, но он будет установлен в вашей папке AppData, и некоторые свойства env не будут настроены должным образом, например $IDEA_JDK%) . В этом случае он будет использовать локальный JDK на основе вашего %JAVA_HOME%. И, как мы уже говорили, IDEA будет использовать более старшую версию, чем версия разработчика, вы получите следующую ошибку:
CompileCommand: exclude com/intellij/openapi/vfs/impl/FilePartNodeRoot.trieDescend
Error occurred during initialization of VM
java.lang.UnsupportedClassVersionError: com/intellij/util/lang/PathClassLoader has been compiled by a more recent version of the Java Runtime (class file version 61.0), this version of the Java Runtime only recognizes class file versions up to 55.0
Таким образом, вы можете установить JRE в отдельную папку JDK (обычно в %IDEA_HOME%/jbr), это будет работать абсолютно.
Для меня на win 10 javac -version показывал java7, а java -version - java8.До "где java" в командной строке показывал java в трех местах. Мне пришлось удалить Java из C:\Windows\System32, удалить запись "C:\ProgramFile\Oracle\Java\javapath" и "C:\ProgramData\Oracle\Java" из переменной пути, оставить только запись Jdk7 в переменной пути работал после двухчасовой борьбы.
Я столкнулся с той же проблемой. Что я сделал, я переименовал каталог (C:\ProgramData\Oracle\Java\javapath) из javapath в javapath1 , и это решило мою проблему.
Начиная с версии Java 8, установщик добавляет «C:\ProgramData\Oracle\Java\javapath» к переменным PATH. Таким образом, вы можете удалить это и использовать свою собственную переменную пути, указывающую на нужный каталог bin версии Java.
Попробуй это:
@echo off
DOSKEY WHICH=@for %%E in (%PATHEXT%) do @for %%I in ($*%%E) do @if NOT "%%~$PATH:I"=="" echo %%~$PATH:I
SET "JAVA_HOME=C:\Java\jdk1.6"
SET "PATH=%JAVA_HOME%\bin;%PATH%"
where.exe java
WHICH java
pause
