Nie można zainstalować Mavena w systemie Windows: „JAVA_HOME jest ustawiony w nieprawidłowym katalogu”

98

Postępowałem zgodnie z samouczkiem Maven co do joty, ale nadal nie mogę zainstalować Mavena w systemie Windows.

Kiedy uruchamiam następujące polecenie w wierszu polecenia:

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

Dostaję:

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

Przeszedłem do folderu instalacyjnego maven i uruchomiłem mvn --versioni otrzymałem:

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

ale kiedy biegnę java -version, dostaję:

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)

Więc mam zainstalowaną Javę. Czy ktoś wie, w czym problem?

hello_world_infinity
źródło

Odpowiedzi:

172

Problemy dotyczą twoich ścieżek.

  1. Upewnij się, że katalog „E: \ java resources \ apache-maven-2.2.0 \ bin” znajduje się w ścieżce wyszukiwania poleceń.

  2. Upewnij się, że zmienna JAVA_HOME odnosi się do katalogu domowego instalacji Java. Jeśli uruchamiasz Javę z „E: \ Sun \ SDK \ jdk \ bin”, zmienna JAVA_HOME musi wskazywać na „E: \ Sun \ SDK \ jdk”.

    Uwaga: JAVA_HOME NIE powinien kończyć się na „\ bin” 1 .

  3. Upewnij się, że nie wstawiłeś średnika w zmiennej JAVA_HOME 2 .

    Uwaga: JAVA_HOME powinna być pojedynczą nazwą katalogu, a nie listą nazw katalogów typu „PATH” oddzieloną średnikami.

Zauważ również, że możesz napotkać problemy, jeśli zignorujesz tę radę w instrukcjach Mavena w systemie Windows dotyczących spacji w nazwach ścieżek kluczy.

„Maven, podobnie jak wiele narzędzi wieloplatformowych, może napotkać problemy, gdy ważne nazwy ścieżek zawierają znaki spacji ”.

„Musisz zainstalować Java SDK (np. Z witryny pobierania Oracle) i powinieneś zainstalować go w ścieżce bez spacji , takiej jak c: \ j2se1.6.” '

„Musisz rozpakować dystrybucję Mavena. Nie rozpakowuj jej w środku kodu źródłowego; wybierz jakąś lokalizację ( bez spacji w ścieżce! ) I rozpakuj ją tam”.

Prostym rozwiązaniem byłoby ponowne zainstalowanie oprogramowania Java lub Maven w innej lokalizacji, tak aby na ścieżce nie było miejsca


1 - .... chyba że dokonałeś szalonego wyboru nazwy miejsca instalacji.

2 - Najwyraźniej powszechnym rozwiązaniem "voodoo" problemów ze ścieżką w systemie Windows jest walnięcie średnikiem na końcu. Generalnie nie jest to zalecane, absolutnie tutaj nie działa.

Stephen C.
źródło
29

BŁĄD: JAVA_HOME jest ustawiony na nieprawidłowy katalog. JAVA_HOME = "E: \ Sun \ SDK \ jdk \ bin" Ustaw zmienną JAVA_HOME w swoim środowisku, aby odpowiadała lokalizacji instalacji Java

JAVA_HOMEpowinien być ustawiony na E:\Sun\SDK\jdk. PATHnależy ustawić na uwzględnienie %JAVA_HOME%\bin.

dfa
źródło
13

Napotkałem ten problem podczas instalacji Grails.

Problem polegał na tym, że moja JAVA_HOME była c:\sun\jdk\i moja PATH ma%JAVA_HOME%bin

Zmieniłem to na: JAVA_HOME= "c:\sun\jdk" and PATH="%JAVA_HOME%\bin"

Potem zadziałało.

L_7337
źródło
10

Miałem ten sam problem i właśnie zaktualizowałem JAVA_HOME.

poprzednio wyglądało to tak: C: \ Program Files \ Java \ jdk1.6.0_45 \ bin Właśnie usunąłem \ bin i zadziałało.

user3548196
źródło
4

Ze względu na ograniczenia bezpieczeństwa w moim obecnym miejscu pracy nie mogłem ustawić zmiennych środowiskowych na moim komputerze z systemem Windows.

Moim obejściem było skopiowanie pliku mvn.bat z% M2% do C: \ WINNT i dodanie na początku pliku wsadowego:

@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%

Nie najładniejsze rozwiązanie, ale działa. Jeśli ktoś ma inny sposób lub obejście problemu, w którym standardowe zmienne środowiska nie mogą być ustawione w systemie, z zadowoleniem przyjmuję jego odpowiedź.

theINtoy
źródło
3

Miałem ten sam problem i żadna z powyższych odpowiedzi nie rozwiązała go za mnie, ponieważ wszystkie moje zmienne env były ustawione. Właśnie przeinstalowałem Javę.

Co zadziałało, to

  1. przejdź do C:\path\to\apache-maven-3.0.4\bini otwórz mvn.batplik.
  2. Znajdź linię, która wygląda tak @SET JAVA_HOME=C:\progra~1\java\jdk1.7.0_03
  3. Popraw go do właściwej ścieżki

Nie wiem, czy to jest specyficzne dla systemu Windows, ale może komuś pomóc!

codinguser
źródło
2

Po wielu nieudanych próbach znalazłem rozwiązanie

To było ";" na końcu JAVA_HOME, które zawsze umieszczam na końcu każdej nowej zmiennej, którą ustawiam. Więc pozbądź się;.

JAVA_HOME ustawił ją również w zmiennej użytkownika (oczywiście bez znaku „;”)

Chinmoy
źródło
1
„… które zawsze umieszczam na końcu każdej nowej zmiennej, którą ustawiam” - Dlaczego miałbyś to zrobić?
Stephen C
1

powinieneś ustawić JAVA_HOME lub MAVEN_HOME bez katalogu bin, na przykład: - JAVA_HOME = C: \ Program Files (x86) \ Java \ jdk1.7.0_45 - MAVEN_HOME = C: \ Program Files (x86) \ apache-maven-3.1.1 teraz path = .....;% MAVEN_HOME% \ bin;% JAVA_HOME% \ bin działa poprawnie

Alireza Alallah
źródło
1

Czasami w systemie Windows spacje w ścieżkach nie są poprawnie rozpoznawane

Jeśli masz problem ze ścieżką i ścieżka wydaje się taka

c:\Program Files\....

spróbuj zmienić go w starym formacie DOS, takim jak

"C:\Progra~1\...

Możesz użyć, dir /xaby sprawdzić poprawną składnię (trzecia kolumna)

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 ...

Na moim komputerze JAVA_HOME jest (i działa)

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

Przetestowano w systemie Windows 10

Diego Betto
źródło
0

JAVA_HOME powinno wyglądać tak: C: \ PROGRA ~ 1 \ Java \ jdk

Mam nadzieję, że to zadziała!

Debasish Rakshit
źródło
0

Wygląda na to, że to stary post, ale nadal chciałem podzielić się, jak ten problem został dla mnie rozwiązany.

W przypadku użytkowników, którzy nie mają dostępu administratora, a po otwarciu wiersza polecenia działa on z uprawnieniami użytkownika. Oznacza to, że możesz mieć ścieżkę taką jak C: \ Users \

więc próbując C: \ Users \ XYZ> mvn --version, w rzeczywistości przeszukuje ścieżkę JAVA_HOME ze zmiennych użytkownika, a nie zmiennych systemowych w zmiennych środowiskowych.

Tak więc, aby to naprawić, musimy utworzyć zmienną środowiskową dla JAVA_HOME w zmiennych użytkownika.

Mam nadzieję, że to komuś pomoże.

Maneshwar
źródło
Ermmm ... Zmienne środowiskowe użytkownika zastępują zmienne środowiskowe systemu w systemie Windows. Jeśli masz zmienną systemową i zmienną środowiskową użytkownika o tej samej nazwie, to zmienna użytkownika "wygrywa" i to, co widzi aplikacja.
Stephen C
0

Uruchomienie eclipse i Maven będzie wymagało przechowywania dwóch zmiennych ścieżek, jednej w lokalizacji jdk1.7_x_x_x, a także w lokalizacji jdk1.7_x_x_ \ bin. Jeśli używasz systemu Windows, gdy jesteś w zmiennych środowiskowych, wykonaj następujące czynności:

1) utwórz zmienną USER o nazwie JAVA_HOME. Wskaż lokalizację pliku JAVA. Na przykład: „C: \ Program Files \ Java \ jdk1.7.0_51” (usuń cudzysłowy)

2) w PATH, dołącz% JAVA_HOME% do PATH. Spowoduje to dodanie lokalizacji pliku z kroku 1 do ścieżki PATH. To jest dobre dla MAVENA

3) jeśli używasz eclipse, musisz mieć ścieżkę do „C: \ Program Files \ Java \ jdk1.7.0_51 \ bin”. Teraz dołącz% JAVA_HOME% \ bin na końcu ścieżki.

4) Twoja ścieżka powinna wyglądać mniej więcej tak: C: \ Program Files (x86) \ Google \ google_appengine \; C: \ Users \ nazwa_użytkownika \ AppData \ Roaming \ npm;% M2%;% JAVA_HOME%;% JAVA_HOME% \ bin

Uwagi: elementom ujętym w%, np.% M2%, przypisuje się zmienne. Wygląda na zbędne, ale konieczne. Możesz potwierdzić, że wszystko działa, wpisując:

java -version
javac -version
mvn -version

Żadne z tych trzech instrukcji wpisanych w znaku zachęty comman nie powinno zwracać błędów.

Warcząca pchła
źródło
Krok 2) jest niepoprawny i niepotrzebny. Ani łańcuch narzędzi Java, ani Maven nie wymagają, aby% JAVA_HOME% znajdował się w zmiennej „PATH”. (Nie wyrządzi to żadnej prawdziwej szkody, ale też nic dobrego.) Odniesienie - tutorialspoint.com/maven/maven_environment_setup.htm
Stephen C
0

za pomocą systemu Windows 10

Miałem problem ... potem całkowicie usunąłem zmienną JAVA_HOME i po prostu dodałem% JAVA_HOME% \ bin w PATH, a potem zadziałało !!! Dla mnie

Code Spy
źródło
1
Thanks.To działa po dodaniu „/ bin” na końcu zmiennej Java_home
Rahul
-1

JDK zmienił lokalizację java.exe między 1.6 a 1.7 !!!

W moim przypadku stwierdziłem, że JAVA_HOME dla JDK musiało dodać na końcu \ jre. Plik mvn bat szuka pliku java.exe i szuka go w katalogu JAVA_HOME \ bin. Nie ma go w przypadku JDK 1.7; znajduje się w JAVA_HOME \ jre \ bin. W JDK 1.6 taki jest w JAVA_HOME \ bin.

Mam nadzieję, że to komuś pomoże.

Brian Reinhold
źródło
1
Uważam, że to nieprawda. Zgodnie z oficjalną dokumentacją Oracle dla języka Java 7 ( docs.oracle.com/javase/7/docs/technotes/tools/windows/… ) podczas instalacji JDK polecenie „java” pojawia się zarówno w „JAVA_HOME \ bin”, jak i „ JAVA_HOME \ jre \ bin ”. Jeśli tak nie jest w Twojej instalacji, oznacza to, że ktoś / coś się z tym pogubiło!
Stephen C
Ciekawy. Nie ma go w moim katalogu / bin, tylko w moim / jre / bin. Może muszę ponownie zainstalować najnowszy JDK
Brian Reinhold
-1

Moja sytuacja była trochę inna.

  • JAVA_HOME został ustawiony prawidłowo, aby wskazywał na 1.7
  • Inne projekty Maven działały / budowały dobrze z funkcjami 1.7.
  • PATH został prawidłowo ustawiony.
  • Wszystko było aktualne.

Wciąż mój prosty nowy projekt Mavena nie działał. To, co zauważyłem, to różnica w dziennikach, kiedy biegałem mvn clean install. W przypadku moich starszych projektów Mavena to widać

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

Ale dla mojego nowego projektu pokazało:

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

Więc spojrzałem na POM.xmli zauważyłem to w POM starego projektu:

<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>

Zasadniczo ta wtyczka mówi, której wersji kompilatora użyć do kompilacji. Po prostu dodałem go do nowego projektu POM.xmli wszystko działało.

Mam nadzieję, że komuś się to przyda.

Bhushan
źródło
To nie jest prawidłowa odpowiedź na to pytanie. Objawy są różne. Rozwiązanie jest inne.
Stephen C
-1

Używam Windows 7, problem, który miałem, był prosty:

Miałem to dla mojej wartości zmiennej środowiskowej JAVA_HOME:

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

kiedy chce:

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

średnik znowu uderza!

:)

Tak rozwiązałem ten problem, więc powinno to być jedno z możliwych rozwiązań.

Alexander Mills
źródło