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.

Kamoliddin
źródło
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.

Eliah Kagan
źródło
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,