JAVA_HOME ist nicht korrekt definiert

14

Ich habe Java JDK Hotspot 1.7 installiert. Wenn ich tippe, java -versionbekomme ich:

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

Das ist richtig.

Und ich habe versucht, Maven zu installieren, und zur /etc/environmentDatei hinzugefügt :

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

Wenn ich jetzt mvn tippe, bekomme ich:

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

Ich setze jedoch keine Markierung für JAV_HOME var in die Umgebungsdatei.

Es versucht zu fliehen

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

Weg, Eigentlich sollte es sein

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

Wenn ich befehle

$JAVA_HOME

Ich bekomme:

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

Ich bin sicher, dass der Pfad ( /usr/lib/jvm/jdk1.7.0) korrekt ist.

Kamoliddin
quelle
Können Sie ein ls -al /usr/lib/jvmund bestätigen, dass "jdk1.7.0" das Format für den Verzeichnisnamen ist? Bei der Verwendung von Oracle werden häufig seltsame Ordnernamen verwendet
Thomas Ward
ls /usr/lib/jvm/java-7und ls "/usr/lib/jvm/java-7"/binergeben, und sollte das gleiche Ergebnis für mich ergeben (die nicht leer ist). Der letzte Teil, Java-7, ist das Ergebnis einer manuellen Änderung - es kann und wird für Sie ein bisschen anders sein. Stellen Sie sicher, dass ein solcher Ordner existiert (jdk1.7.0).
Benutzer unbekannt
Ich habe 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 nach dem Ausführen dieses ls -al /usr/lib/jvm Befehls
Kamoliddin
Beachten Sie, dass eine Variable in der Konsole zu sehen, werden Sie eingeben zu erwarten: echo $VARNAME. Wenn Sie dies einfach tun $VARNAME, wird ausgeführt, was in dieser Variablen enthalten ist.
Alexis Wilke

Antworten:

15

JAVA_HOMEsollte auf den Namen des Verzeichnisses festgelegt wird, enthält das binVerzeichnis , das enthält das Java - Executables (insbesondere javaselbst).

Vorausgesetzt, Sie haben ein /usr/lib/jvm/jdk1.7.0Verzeichnis, enthält es wahrscheinlich ein jreUnterverzeichnis, das das binVerzeichnis javamit den zugehörigen ausführbaren Dateien enthält .

So werden Sie wahrscheinlich werden Einstellung sollte JAVA_HOMEauf /usr/lib/jvm/jdk1.7.0/jrestatt /usr/lib/jvm/jdk1.7.0.

Eliah Kagan
quelle
Bei der Installation eines JDK führt nicht nur die JRE in der Regel zu einem JDK-Verzeichnis, das ein bin-Verzeichnis enthält, sondern auch zu einem JRE-Verzeichnis, das selbst ein bin-Verzeichnis enthält. Wurde JAVA_HOMEaber immer auf das übergeordnete Verzeichnis gesetzt, nicht auf das jreVerzeichnis.
Benutzer unbekannt
Interessant, ich muss es auf jdk no setzen? Ich werde Code in Java schreiben, kompilieren, bereitstellen, etc ..
Kamoliddin
@Kamoliddin Wenn Maven verwendet, um $JAVA_HOMEzu wissen, wo sich die javacBinärdateien und andere Entwicklungsdateien befinden, müssen Sie sie auf das jdkVerzeichnis einstellen, das das binVerzeichnis enthält, in dem sich diese Binärdateien befinden.
Eliah Kagan
Danke, ich weiß nicht, es hat nach dem Neustart funktioniert. Ich glaube, ich muss nicht neu starten, damit die Änderungen übernommen werden. Ich habe nichts geändert. Es funktionierte.
Kamoliddin
Ich bin mir nicht sicher, warum er überhaupt jdk1.7.0 verwendet. Sollte /usr/lib/jvm/javafür beide javaund ausreichen javac. Alternatives kümmert sich darum
Brian