Не вдається встановити 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 ресурси \ apache-maven-2.2.0 \ bin" знаходиться у вашому шляху пошуку команд.

  2. Переконайтеся, що змінна JAVA_HOME посилається на домашній каталог для вашої установки Java. Якщо ви виконуєте Java з "E: \ Sun \ SDK \ jdk \ bin", тоді змінну JAVA_HOME потрібно вказувати на "E: \ Sun \ SDK \ jdk".

    Примітка: JAVA_HOME НЕ повинен закінчуватися символом "\ bin" 1 .

  3. Переконайтеся, що ви не помістили крапку з комою у змінній JAVA_HOME 2 .

    Примітка: JAVA_HOME має бути єдиним іменем каталогу, а не "PATH-подібним" списком імен каталогів, розділених крапками з комою.

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

"Мейвен, як і багато інструментів крос-платформи, може зіткнутися з проблемами, коли у важливих іменах трафіку є символи пробілу ."

"Вам потрібно встановити 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%

Не найприємніше рішення, але воно працює. Якщо у когось є якийсь інший шлях або обхід, коли стандартні умови не можуть бути встановлені в системі, я б вітаю їх відповідь.


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 також встановив його в User Variable (без курсу ";")


1
"... яку я завжди кладу в кінці кожної нової змінної, яку я встановив" - Навіщо ти це зробив?
Stephen C

1

вам слід встановити JAVA_HOME або MAVEN_HOME без каталогу біна, наприклад: - JAVA_HOME = C: \ програмні файли (x86) \ Java \ jdk1.7.0_45 - MAVEN_HOME = C: \ програмні файли (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 у користувацьких змінних.

Сподіваюся, це комусь допомагає.


Ermmm ... Змінні середовища користувача змінюють змінні системного середовища в Windows. Якщо у вас є змінна система та користувальницьке середовище з тим самим іменем, то змінна користувача "виграє", і те, що бачить програма.
Стівен C

0

Запуск затемнення, а також 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 -версія

Кожне з цих трьох тверджень, введених у командному запиті, не повинно повертати помилок.


Крок 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 ". Якщо це не так у вашій установці, то хтось / щось заплутався з цим!
Стівен С

Цікаво. Це не в моєму / 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і все працювало.

Сподіваюся, комусь це стане в нагоді.


Це неправдива відповідь на це питання. Симптоми різні. Рішення різне.
Стівен 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.