Невозможно установить Maven в Windows: «JAVA_HOME установлен в недопустимый каталог»


98

Я внимательно следил за руководством по Maven, но мне все еще не удается установить Maven в Windows.

Когда я запускаю в командной строке следующее:

E:\Documents and Settings\zach>mvn --version

Я получил:

'mvn' is not recognized as an internal or external command, operable program or batch file.

Я перешел в папку установки maven, запустил mvn --versionи получил:

E:\java resources\apache-maven-2.2.0\bin>mvn --version
ERROR: JAVA_HOME is set to an invalid directory.
JAVA_HOME = "E:\Sun\SDK\jdk\bin"
Please set the JAVA_HOME variable in your environment to match the
location of your Java installation

но когда я бегу, java -versionя получаю:

java version "1.6.0_14"
Java(TM) SE Runtime Environment (build 1.6.0_14-b08)
Java HotSpot(TM) Client VM (build 14.0-b16, mixed mode)

Итак, у меня установлена ​​Java. Кто-нибудь знает, в чем проблема?

Ответы:


172

Проблемы связаны с вашими путями.

  1. Убедитесь, что каталог «E: \ java resources \ apache-maven-2.2.0 \ bin» находится на пути поиска вашей команды.

  2. Убедитесь, что переменная JAVA_HOME указывает на домашний каталог вашей установки Java. Если вы запускаете Java из «E: \ Sun \ SDK \ jdk \ bin», тогда переменная JAVA_HOME должна указывать на «E: \ Sun \ SDK \ jdk».

    NB: JAVA_HOME НЕ должен заканчиваться на "\ bin" 1 .

  3. Убедитесь, что вы не поставили точку с запятой в переменной JAVA_HOME 2 .

    NB: JAVA_HOME должно быть одним именем каталога, а не списком имен каталогов, разделенных точками с запятой, в стиле «PATH».

Также обратите внимание, что у вас могут возникнуть проблемы, если вы проигнорируете этот совет в инструкциях Maven для Windows о пробелах в именах ключей.

«Maven, как и многие кроссплатформенные инструменты, может столкнуться с проблемами, когда в важных именах путей есть пробелы ».

«Вам необходимо установить Java SDK (например, с сайта загрузки Oracle), и вы должны установить его по пути без пробелов , например c: \ j2se1.6.» '

«Вам нужно распаковать дистрибутив Maven. Не распаковывайте его в середине исходного кода; выберите какое-нибудь место ( без пробелов в пути! ) И распакуйте его там».

Простым решением этой проблемы было бы переустановить Java или Maven в другом месте, чтобы в пути не было места.


1 - .... если только вы не сделали безумный выбор имени для места установки.

2 - По-видимому, обычное «вудуское» решение проблем с путями в Windows - это поставить точку с запятой в конце. Не рекомендуется вообще, тут категорически не работает.


29

ОШИБКА: JAVA_HOME установлен в недопустимый каталог. JAVA_HOME = "E: \ Sun \ SDK \ jdk \ bin" Установите переменную JAVA_HOME в вашей среде, чтобы она соответствовала местоположению вашей установки Java.

JAVA_HOMEдолжен быть установлен на E:\Sun\SDK\jdk. PATHдолжен быть включен %JAVA_HOME%\bin.


13

Я столкнулся с этой проблемой при установке Grails.

Проблема была моя JAVA_HOME была c:\sun\jdk\и моя PATH имеет%JAVA_HOME%bin

Я изменил его на: JAVA_HOME= "c:\sun\jdk" and PATH="%JAVA_HOME%\bin"

После этого все заработало.


10

Я столкнулся с той же проблемой и только что обновил JAVA_HOME, который у меня работал.

раньше это было так: C: \ Program Files \ Java \ jdk1.6.0_45 \ bin Просто удалил \ bin, и у меня это сработало.


4

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

Моим обходным решением было скопировать файл mvn.bat из% M2% в C: \ WINNT и добавить следующее в верхнюю часть командного файла:

@REM Needed as unable to set env variables on my desktop PC.

set MAVEN_OPTS=-Xms256m -Xmx1024m
set M2_HOME=C:\apache-maven-3.0.4
set M2=%M2_HOME%\bin
set JAVA_HOME=C:\Program Files\Java\jdk1.5.0_15
set PATH=%JAVA_HOME%\bin;%M2%;%PATH%

Не самое лучшее решение, но оно работает. Если у кого-то есть другой способ или обходной путь, когда стандартные переменные env не могут быть установлены в систему, я буду приветствовать их ответ.


3

У меня была такая же проблема, и ни один из приведенных выше ответов не устранил ее, потому что все мои переменные env были установлены. Я только что переустановил Java.

Что сработало, так это

  1. перейдите в C:\path\to\apache-maven-3.0.4\binи откройте mvn.batфайл.
  2. Найдите строку, которая выглядит так @SET JAVA_HOME=C:\progra~1\java\jdk1.7.0_03
  3. Исправьте это на правильный путь

Я не знаю, относится ли это к Windows, но это может кому-то помочь!


2

После множества неудачных попыток я нашел решение

Это было ";" в конце JAVA_HOME, который я всегда помещаю в конец каждой новой переменной, которую я устанавливаю. Так что избавьтесь от;.

JAVA_HOME также устанавливает его в пользовательской переменной (конечно, без ";")


1
«... который я всегда ставлю в конце каждой новой переменной, которую я устанавливаю» - Зачем вы это делаете?
Стивен С.

1

вы должны установить JAVA_HOME или MAVEN_HOME без каталога bin, например: - JAVA_HOME = C: \ Program Files (x86) \ Java \ jdk1.7.0_45 - MAVEN_HOME = C: \ Program Files (x86) \ apache-maven-3.1.1 сейчас path = .....;% MAVEN_HOME% \ bin;% JAVA_HOME% \ bin работает правильно


1

Иногда в Windows пробелы в путях распознаются неправильно

Если у вас есть проблема с путем, и путь кажется

c:\Program Files\....

попробуйте изменить его в старом формате DOS, например

"C:\Progra~1\...

Вы можете использовать dir /xдля проверки правильности синтаксиса (третий столбец)

C:\>dir /x ... 11.01.2008 15:47 <DIR> DOCUME~1 Documents and Settings 01.12.2006 09:10 <DIR> MYPROJ~1 My Projects 21.01.2011 14:08 <DIR> PROGRA~1 Program Files ...

На моем компьютере JAVA_HOME есть (и он работает)

"C:\Progra~1\Java\jdk1.8.0_121"

Протестировано в Windows 10



0

Кажется, это старый пост, но все же я хотел рассказать, как эта проблема была исправлена ​​для меня.

Для пользователей, у которых нет прав администратора, и когда они открывают командную строку, она запускается с правами пользователя. Это означает, что у вас может быть такой путь, как C: \ Users \

поэтому при попытке C: \ Users \ XYZ> mvn --version он фактически ищет путь JAVA_HOME из пользовательских переменных, а не системных переменных в переменных среды.

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

Надеюсь, это кому-то поможет.


Эммм ... Переменные среды пользователя имеют приоритет над системными переменными среды в Windows. Если у вас есть системная и пользовательская переменная среды с одинаковыми именами, то пользовательская переменная «выигрывает», и это то, что видит приложение.
Stephen C

0

Запуск eclipse, а также запуск Maven потребуют от вас сохранения двух переменных пути, одну в вашем местоположении jdk1.7_x_x_x, а также в вашем jdk1.7_x_x_ \ bin. Если вы используете Windows, когда вы находитесь в переменных среды, сделайте следующее:

1) создайте переменную USER с именем JAVA_HOME. Укажите это местоположение вашего файла JAVA. Например: «C: \ Program Files \ Java \ jdk1.7.0_51» (удалить кавычки)

2) в PATH добавьте% JAVA_HOME% к PATH. Это добавит местоположение файла из шага 1 в ваш PATH. Это хорошо для MAVEN

3) если вы используете eclipse, вам необходимо указать путь к «C: \ Program Files \ Java \ jdk1.7.0_51 \ bin». Теперь добавьте% JAVA_HOME% \ bin в конец вашего пути.

4) ваш путь должен выглядеть примерно так: C: \ Program Files (x86) \ Google \ google_appengine \; C: \ Users \ username \ AppData \ Roaming \ npm;% M2%;% JAVA_HOME%;% JAVA_HOME% \ bin

Примечания: элементы, заключенные в%, например% M2%, являются переменными. Это кажется лишним, но необходимым. Вы можете подтвердить, что все работает, набрав:

java -version
javac -version
mvn -version

Каждый из этих трех операторов, введенных в командной строке, не должен возвращать ошибок.


Шаг 2) неверен и ненужен. Ни инструментальная цепочка Java, ни Maven не требуют, чтобы% JAVA_HOME% был в переменной "PATH". (На самом деле это не причинит никакого вреда, но и не принесет никакой пользы.) Ссылка - tutorialspoint.com/maven/maven_environment_setup.htm
Stephen C,

0

с помощью Windows 10

У меня возникла проблема ... затем я полностью удалил переменную JAVA_HOME и просто добавил% JAVA_HOME% \ bin в PATH, и это сработало !!! для меня


1
Спасибо. Это работает после добавления "/ bin" в конец переменной Java_home
Рахул

-1

JDK изменил расположение java.exe с 1.6 на 1.7 !!!

В моем случае я обнаружил, что JAVA_HOME для JDK должен был добавить \ jre в конце. Файл mvn bat ищет java.exe и ищет его в JAVA_HOME \ bin. Его нет для JDK 1.7; он находится в JAVA_HOME \ jre \ bin. В JDK 1.6 он находится в JAVA_HOME \ bin.

Надеюсь, это кому-то поможет.


1
Я считаю, что это неправильно. Согласно официальной документации Oracle для Java 7 ( docs.oracle.com/javase/7/docs/technotes/tools/windows/… ), при установке JDK команда «java» появляется как в «JAVA_HOME \ bin», так и в « JAVA_HOME \ jre \ bin ". Если это не так в вашей установке, значит, кто-то / что-то с ней испортил!
Stephen C

Интересный. Его нет в моем каталоге / bin, только в моем / jre / bin. Возможно, мне нужно переустановить последнюю версию JDK
Брайан Рейнхольд

-1

Моя ситуация была немного другой.

  • JAVA_HOME был установлен правильно, чтобы указывать на 1,7
  • Другие проекты Maven работали / строились нормально с функциями 1.7.
  • PATH был установлен правильно.
  • Все было актуально.

Тем не менее мой простой новый проект Maven не работал. Я заметил разницу в журналах при запуске mvn clean install. Для моих более старых проектов Maven он показал

[INFO] --- maven-compiler-plugin:2.3.2:compile (default-compile) @ oldProject---

Но для моего нового проекта он показал:

[INFO] --- maven-compiler-plugin:2.0.2:compile (default-compile) @ newProject ---

Итак, я посмотрел POM.xmlи заметил вот что в POM старого проекта:

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>2.3.2</version>
            <configuration>
                <source>1.7</source>
                <target>1.7</target>
            </configuration>
        </plugin>
    </plugins>
</build>

По сути, этот плагин сообщает, какую версию компилятора использовать для компиляции. Просто добавил его в новый проект, POM.xmlи все заработало.

Надеюсь, это кому-то пригодится.


Это неверный ответ на этот вопрос. Симптомы разные. Решение другое.
Stephen C

-1

Я использую Windows 7, проблема была проста:

У меня было это для значения переменной среды JAVA_HOME:

"C:\Program Files\Java\jdk1.7.0_51;"

когда захочет:

"C:\Program Files\Java\jdk1.7.0_51"

снова появляется точка с запятой!

:)

Вот как я решил эту проблему, так что это должно быть одним из возможных решений.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.