JAVA_HOME-Fehler beim Maven-Build, OSX-10.8.4-Version

10
Error: JAVA_HOME is not defined correctly.
  We cannot execute
  /System/Library/Frameworks/JavaVM.framework/Versions/CurrentJDK/Home/bin/java

Ich habe mein OSX auf 10.8.4 aktualisiert. Nach dem OSX-Upgrade habe ich mein JDK und meine JRE auf 7 aktualisiert. Ich erhalte jedoch den obigen Fehler, wenn ich versuche, ein Maven-Projekt zu erstellen.

Wenn ich renne ls -al /System/Library/Frameworks/JavaVM.framework/Versions/

Ich bekomme die folgende Antwort

drwxr-xr-x  11 root  wheel  374 Jul 22 22:33 .
drwxr-xr-x  10 root  wheel  340 Jul 22 18:30 ..
lrwxr-xr-x   1 root  wheel   10 Jul 22 18:30 1.4 -> CurrentJDK
lrwxr-xr-x   1 root  wheel   10 Jul 22 18:30 1.4.2 -> CurrentJDK
lrwxr-xr-x   1 root  wheel   10 Jul 22 18:30 1.5 -> CurrentJDK
lrwxr-xr-x   1 root  wheel   10 Jul 22 18:30 1.5.0 -> CurrentJDK
lrwxr-xr-x   1 root  wheel   10 Jul 22 18:30 1.6 -> CurrentJDK
lrwxr-xr-x   1 root  wheel   10 Jul 22 18:30 1.6.0 -> CurrentJDK
drwxr-xr-x   7 root  wheel  238 Jul 22 18:30 A
lrwxr-xr-x   1 root  wheel    1 Jul 22 18:30 Current -> A
lrwxr-xr-x   1 root  wheel   59 Jul 22 18:30 CurrentJDK -> /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents

Dafür ls -al /System/Library/Frameworks/JavaVM.framework/Versions/CurrentJDK/Home/bin

Ich sehe keine Inhalte in CurrentJDK weiter.

Beim Laufen /usr/libexec/java_home

Ich bekomme:

/Library/Java/JavaVirtualMachines/jdk1.7.0_25.jdk/Contents/Home

Ich bin ziemlich neu in der Arbeit mit OS X. Lassen Sie mich wissen, ob ich noch einen Punkt verpasst habe, um es erfolgreich zu machen.

arvind406
quelle
Können Sie laufen echo $JAVA_HOME, ls -al /System/Library/Frameworks/JavaVM.framework/Versions/CurrentJDK/Home/binund ls -al /System/Library/Frameworks/JavaVM.framework/Versions/und das Ergebnis auf die Frage hinzufügen?
Nohillside
@patrix .bashrc -> export JAVA_HOME=/usr/libexec/java_home .profile -> export PATH=${JAVA_HOME}/bin:$PATH export CATALINA_HOME=/Library/Tomcat/Home .bashrc und .profile enthält die oben genannten Befehle.
arvind406
@Patrix .. Ich sehe, dass der Java-Pfad nicht aus der bashrc-Datei abgerufen wird. Wenn ich JAVA_HOME nur separat vom Terminal aus einstelle, kann ich ein Projekt erstellen. Warum könnte das so passieren? Irgendeine Idee ?
Arvind406

Antworten:

9

Apple empfiehlt, JAVA_HOME auf "/ usr / libexec / java_home" zu setzen.

Was für mich funktioniert hat, war, dies um $ () zu wickeln. Also habe ich JAVA_HOME wie $ (/ usr / libexec / java_home) mit den folgenden Befehlen konfiguriert:

vim ~/.bash_profile 
export JAVA_HOME=$(/usr/libexec/java_home)
source ~/.bash_profile
hcpl
quelle
Das hat bei mir perfekt funktioniert!
rdegges
2

/System/Library/Frameworks/JavaVM.framework/Versions/CurrentJDK/Home/bin/java Wenn es existiert, ist das von Apple gelieferte Java, dessen neueste Version eine JRE 1.6 wäre.

Um das Oracle JDK (das von Ihnen erwähnte Java 7) zu verwenden, verwenden Sie den Pfad / usr / bin / java, wenn Sie es vollständig installiert haben. Beachten Sie, dass die JRE nur für Java-Applets gilt und daher / usr / bin / java nicht beeinflusst

Weitere Informationen finden Sie in der Oracle-Installationsdokumentation

und notiere von dort

Um eine andere Version von Java auszuführen, geben Sie entweder den vollständigen Pfad an oder verwenden Sie das Tool java_home:

/usr/libexec/java_home -v 1.7.0_06 --exec javac -version

Weitere Informationen finden Sie in der Manpage java_home (1).

user151019
quelle
.profile -> export PATH = $ {JAVA_HOME} / bin: $ PATH export CATALINA_HOME = / Library / Tomcat / Home
arvind406
@arvind was bedeuten diese Kommentare?
user151019
@ arvind406 ja aber was fügt das hinzu oder fragt nach meiner Antwort?
user151019
Vorherige Kommentare wurden im falschen Fenster kommentiert. Entschuldigung. Nach dem Upgrade auf 10.8 OSX habe ich JDK und JRE auf 7 aktualisiert. Ich habe die Frage noch einmal aktualisiert. Bitte schauen Sie und lassen Sie mich wissen, wenn ich irgendwo falsch liege. /usr/libexec/java_home/Library/Java/JavaVirtualMachines/jdk1.7.0_25.jdk/Contents/Home
Wenn
@Mark .. Ich sehe, dass der Pfad nicht aus der bashrc-Datei abgerufen wird. Wenn ich JAVA_HOME nur separat vom Terminal aus einstelle, kann ich ein Projekt erstellen. Warum könnte das so passieren? Irgendeine Idee ?
Arvind406
1

Folgen Sie diesem Link: /programming//a/44564303/5005676 Wenn Sie das MVN-Skript sehen: Der Code schlägt hier fehl ---

Schritte zum Debuggen und Beheben:

Schritt 1: Öffnen Sie das MVN-Skript /Users/Username/apache-maven-3.0.5/bin/mvn (Öffnen Sie mit dem Befehl less wie: less /Users/Username/apache-maven-3.0.5/bin/mvn)

Schritt 2: Finden Sie den folgenden Code im Skript heraus:

  if [ -z "$JAVACMD" ] ; then
  if [ -n "$JAVA_HOME"  ] ; then
    if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
      # IBM's JDK on AIX uses strange locations for the executables
      JAVACMD="$JAVA_HOME/jre/sh/java"
    else
      JAVACMD="$JAVA_HOME/bin/java"
    fi
  else
    JAVACMD="`which java`"
  fi
fi

if [ ! -x "$JAVACMD" ] ; then
  echo "Error: JAVA_HOME is not defined correctly."
  echo "  We cannot execute $JAVACMD"
  exit 1
fi

Schritt 3: Dies geschieht, weil die Variable JAVACMD nicht festgelegt wurde. Es wird also der Fehler angezeigt.

Hinweis: Um dies zu beheben

export JAVACMD=Library/Java/JavaVirtualMachines/jdk1.8.0_131.jdk/Contents/Home/jre/bin/java

export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_131.jdk/Contents/Home/

Schlüssel: Wenn Sie möchten, dass es permanent geöffnet ist, öffnen Sie emacs.profile

Veröffentlichen Sie die Befehle und drücken Sie Strg-x Strg-c (Save-Buffers-Kill-Terminal).

Shubham Verma
quelle