Error: JAVA_HOME is not defined correctly executing maven

前端 未结 14 1461
时光说笑
时光说笑 2020-11-28 05:50

I installed java and set path to environment and when I execute echo $JAVA_HOME I get the following output:

/usr/lib/jvm/java-7-oracle/jre/bin/j         


        
相关标签:
14条回答
  • 2020-11-28 06:42

    In my case, the problem was in vscode.

    I use windows and installed Ubuntu on my computer, so vscode terminal uses the Ubuntu. I just go to settings.json and change to cmd.exe again

    0 讨论(0)
  • 2020-11-28 06:43

    We open a terminal and look for the location of java:

    manuel@zonademanel:~ → whereis java
    

    java: /usr/bin/java /etc/java /usr/bin/X11/java /usr/share/java /usr/share/man/man1/java.1.gz

    What we are looking for is /usr/bin/java continue on the command line to find the absolute path , as this is only a symbolic link.

    manuel@zonademanel:~ → ls -lah /usr/bin/java
    

    lrwxrwxrwx 1 root root 22 may 19 2015 /usr/bin/java -> /etc/alternatives/java

    manuel@zonademanel:~ → ls -lah /etc/alternatives/java
    

    lrwxrwxrwx 1 root root 39 dic 7 11:52 /etc/alternatives/java -> /usr/lib/jvm/java-8-oracle/jre/bin/java

    I modified my /etc/environment file with the following values

    PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/usr/lib/jvm/java-8-oracle/jre/bin" JAVA_HOME="/usr/lib/jvm/java-8-oracle/jre"

    If I do not want to relogin I can reload the changes with:

    source /etc/environment 
    

    ​​And run mvn -version correctly

    manuel@zonademanel:~ → mvn -version
    

    Apache Maven 3.0.5
    Maven home: /usr/share/maven
    Java version: 1.8.0_77, vendor: Oracle Corporation
    Java home: /usr/lib/jvm/java-8-oracle/jre
    Default locale: es_MX, platform encoding: UTF-8
    OS name: "linux", version: "3.16.0-70-generic", arch: "amd64", family: "unix"

    0 讨论(0)
  • 2020-11-28 06:44

    Use these two commands (for Java 8):

    sudo update-java-alternatives --set java-8-oracle
    java -XshowSettings 2>&1 | grep -e 'java.home' | awk '{print "JAVA_HOME="$3}' | sed "s/\/jre//g" >> /etc/environment
    
    0 讨论(0)
  • 2020-11-28 06:45

    If you are using mac-OS , export JAVA_HOME=/usr/libexec/java_home need to be changed to export JAVA_HOME=$(/usr/libexec/java_home) . Steps to do this :

     $ vim .bash_profile
    
     export JAVA_HOME=$(/usr/libexec/java_home)
    
     $ source .bash_profile
    

    where /usr/libexec/java_home is the path of your jvm

    0 讨论(0)
  • 2020-11-28 06:46

    It happens because of the reason mentioned below :

    If you see the mvn script: The code fails here ---

    Steps for debugging and fixing:

    Step 1: Open the mvn script /Users/Username/apache-maven-3.0.5/bin/mvn (Open with the less command like: less /Users/Username/apache-maven-3.0.5/bin/mvn)

    Step 2: Find out the below code in the script:

      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
    

    Step3: It is happening because JAVACMD variable was not set. So it displays the error.

    Note: To Fix it

    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/
    

    Key: If you want it to be permanent open emacs .profile

    post the commands and press Ctrl-x Ctrl-c ( save-buffers-kill-terminal ).

    0 讨论(0)
  • 2020-11-28 06:48

    JAVA_HOME should be /usr/lib/jvm/java-7-oracle/jre/.

    0 讨论(0)
提交回复
热议问题