JAVA_HOME nie jest poprawnie zdefiniowany


14

Zainstalowałem java jdk hotspot 1.7. Kiedy piszę java -version, otrzymuję:

java version "1.7.0" 
Java(TM) SE Runtime Environment (build 1.7.0-b147)

To jest poprawne.

Próbowałem zainstalować maven i dodałem do /etc/environmentpliku:

JAVA_HOME=/usr/lib/jvm/jdk1.7.0
M2_HOME=/usr/local/apache-maven/apache-maven-3.0.4
MAVEN_HOME=/usr/local/apache-maven/apache-maven-3.0.4
M2=/usr/local/apache-maven/apache-maven-3.0.4/bin

Teraz kiedy piszę mvn, otrzymuję:

Error: JAVA_HOME is not defined correctly.   We cannot execute
”/usr/lib/jvm/jdk1.7.0”/bin/java

Jednak nie umieszczam znaku „dla JAV_HOME var w pliku środowiska.

Próbuje uciec

”/usr/lib/jvm/jdk1.7.0”/bin/java

ścieżka, tak naprawdę powinno być

/usr/lib/jvm/jdk1.7.0/bin/java

Kiedy dowodzę

$JAVA_HOME

Staje się:

bash: ”/usr/lib/jvm/jdk1.7.0”: No such file or directory

Jestem pewien, że ścieżka ( /usr/lib/jvm/jdk1.7.0) jest poprawna.


Czy możesz zrobić ls -al /usr/lib/jvmi potwierdzić, że „jdk1.7.0” jest formatem nazwy katalogu? Podczas korzystania z Oracle zazwyczaj używają dziwnych nazw folderów
Thomas Ward

ls /usr/lib/jvm/java-7i ls "/usr/lib/jvm/java-7"/binwydaj i powinien przynieść mi ten sam wynik (który nie jest pusty). Ostatnia część, java-7, jest wynikiem ręcznej modyfikacji - może i będzie dla ciebie nieco inna. Sprawdź, czy taki folder istnieje (jdk1.7.0).
użytkownik nieznany

Dostałem total 44 drwxr-xr-x 3 root root 4096 Jun 28 01:57 . drwxr-xr-x 184 root root 36864 Jun 28 01:34 .. drwxr-xr-x 10 root root 4096 Jun 27 23:30 jdk1.7.0 po uruchomieniu tego ls -al /usr/lib/jvm polecenia
Kamoliddin

Należy pamiętać, że aby zobaczyć zmienną w konsoli, to oczekuje się wpisać: echo $VARNAME. Jeśli to zrobisz $VARNAME, wykona to, co jest w tej zmiennej.
Alexis Wilke,

Odpowiedzi:


15

JAVA_HOMEpowinna być ustawiona na nazwę katalogu, który zawiera ten binkatalog, który zawiera pliki wykonywalne Java (w szczególności javasama).

Zakładając, że masz /usr/lib/jvm/jdk1.7.0katalog, prawdopodobnie zawiera on jrepodkatalog zawierający binkatalog zawierający javapowiązane pliki wykonywalne.

Należy więc prawdopodobnie ustawienie JAVA_HOMEsię /usr/lib/jvm/jdk1.7.0/jrezamiast /usr/lib/jvm/jdk1.7.0.


Instalowanie JDK, nie tylko JRE zwykle prowadzi do katalogu JDK zawierającego katalog bin, a także do katalogu JRE, który sam zawiera katalog bin. Ale JAVA_HOMEzawsze był ustawiony na katalog macierzysty, a nie na jrekatalog.
użytkownik nieznany

Interesujące, muszę ustawić jdk nie? Zamierzam napisać kod w Javie, skompilować, wdrożyć itp.
Kamoliddin

@Kamoliddin Jeśli Maven używa $JAVA_HOMEwiedzieć, gdzie javaci inne pliki binarne rozwojowe, to tak, będziesz musiał ustawić go do jdkkatalogu zawierającego bindir, który zawiera te pliki binarne.
Eliah Kagan

Dzięki, nie wiem, zadziałało po ponownym uruchomieniu, myślę, że nie muszę restartować, aby zastosować zmiany. Nic nie zmieniłem. Zadziałało.
Kamoliddin

Nie jestem pewien, dlaczego w ogóle używa jdk1.7.0 .. /usr/lib/jvm/javapowinno wystarczyć zarówno dla, jak javai dla javac. Zajmuje się tym alternatywa
Brian,
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.