오류 : JAVA_HOME이 Maven을 올바르게 실행하도록 정의되지 않았습니다.
Java를 설치하고 환경에 대한 경로를 설정하고 실행 echo $JAVA_HOME
하면 다음 출력이 표시됩니다.
/usr/lib/jvm/java-7-oracle/jre/bin/java
나는 또한 파일을 설치 apache-maven
하고 변경 environment
했으며 이제 다음과 같이 보입니다.
JAVA_HOME="/usr/lib/jvm/java-7-oracle/jre/bin/java"
M2_HOME=/usr/local/apache-maven/apache-maven-3.0.5
M2=$M2_HOME/bin
MAVEN_OPTS="-Xms256m -Xmx512m"
PATH=$M2:$PATH
하지만 실행 mvn --version
하면 경고가 표시됩니다.
Error: JAVA_HOME is not defined correctly.
We cannot execute /usr/lib/jvm/java-7-oracle/jre/bin/java/bin/java
결국 반복되는 이유를 알 수 없습니다. /bin/java/bin/java
bash 셸을 사용하고 Oracle 설치 프로그램과 함께 Java를 설치했다고 가정하면 다음을 추가 할 수 있습니다. .bash_profile
export JAVA_HOME=$(/usr/libexec/java_home)
export PATH=$JAVA_HOME/jre/bin:$PATH
이것은 JAVA_HOME
Oracle 설치 프로그램에서 정의한 올바른 것을 선택하고 $PATH
발견되었는지 확인 하기 위해 먼저 설정합니다 .
또한 Java를 업데이트 할 때 나중에 변경할 필요가 없습니다.
편집하다
의견에 따라 :
재부팅 후 영구적으로 만들기
셸 구성 파일에 해당 줄을 추가하기 만하면됩니다. (그것이라고 가정 bash
)
예 : .bashrc
, .bash_profile
또는 .profile
(우분투)
사용자 정의 Java 설치 사용
설정 JAVA_HOME
포함하지 않는 사용자 정의 자바 설치 경로의 루트 폴더에 $()
.
전의: JAVA_HOME=/opt/java/openjdk
JAVA_HOME은 /usr/lib/jvm/java-7-oracle/jre/
.
터미널을 열고 java의 위치를 찾습니다.
manuel@zonademanel:~ → whereis java
자바 : / usr / bin / java / etc / java / usr / bin / X11 / java / usr / share / java /usr/share/man/man1/java.1.gz
우리가 찾고있는 것은 / usr / bin / java가 심볼릭 링크 일 뿐이므로 절대 경로를 찾기 위해 명령 줄에서 계속합니다.
manuel@zonademanel:~ → ls -lah /usr/bin/java
lrwxrwxrwx 1 루트 루트 2015 년 5 월 22 일 / usr / bin / java-> / etc / alternatives / java
manuel@zonademanel:~ → ls -lah /etc/alternatives/java
lrwxrwxrwx 1 루트 루트 39 dic 7 11:52 / etc / alternatives / java-> / usr / lib / jvm / java-8-oracle / jre / bin / java
다음 값으로 / etc / environment 파일을 수정했습니다.
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 "
다시 로그인하지 않으려면 다음을 사용하여 변경 사항을 다시로드 할 수 있습니다.
source /etc/environment
그리고 mvn -version을 올바르게 실행하십시오.
manuel@zonademanel:~ → mvn -version
Apache Maven 3.0.5
Maven 홈 : / usr / share / maven
Java 버전 : 1.8.0_77, 공급 업체 : Oracle Corporation
Java 홈 : / usr / lib / jvm / java-8-oracle / jre
기본 로케일 : es_MX, 플랫폼 인코딩 : UTF-8
OS 이름 : "linux", 버전 : "3.16.0-70-generic", arch : "amd64", 제품군 : "unix"
$JAVA_HOME
해당 부분 중 하나가 아니라 java가 설치된 디렉토리 여야합니다.
export JAVA_HOME=/usr/lib/jvm/java-7-oracle
몇 가지 이유로 인해이 오류가 발생할 수 있습니다. 이 문제를 빠르게 해결하려면 아래 단계를 따르세요.
먼저 자바 위치를 찾으십시오. 설치된 Java 플랫폼 목록을 가져 오려면 터미널에서 다음 명령을 실행하십시오.
$ sudo update-alternatives --config java
이제 JAVA_HOME 및 PATH를 설정하십시오.
$ export JAVA_HOME=<java_home>
$ export PATH=$JAVA_HOME/jre/bin:$PATH
심볼릭 링크 만들기
$ sudo ln -s <java_home>/jre <java_symlink_path>
귀하의 사례를 예로 들면 :
$ sudo ln -s /usr/lib/jvm/java-7-oracle/jre /usr/lib/jvm/java-7-oracle/jre/bin/java
위의 명령은 시스템이 문제에서 찾으려고하는 심볼릭 링크 위치를 생성합니다.
마지막으로
$ mvn --version
제 경우에는 java가 설치된 전체 디렉토리를 가져와야합니다.
export JAVA_HOME=/usr/java/jdk1.8.0_31
export JAVA_HOME = / usr / java / jdk1.8.0_31.로 설정하고 sudo로 실행하면 실행됩니다 ..
첫째, 개발 모드에서는 JRE 대신 JDK를 사용해야합니다. 둘째, JAVA_HOME은 Java를 설치하고 다른 모든 프레임 워크가 필요한 항목 (JRE, javac, ...)을 검색하는 곳입니다.
그래서 설정하면
JAVA_HOME = / usr / lib / jvm / java-7-oracle / jre / bin / java
when you run a "mvn" command, Maven will try to access to the java by adding /bin/java, thinking that the JAVA_HOME is in the root directory of Java installation.
But setting
JAVA_HOME=/usr/lib/jvm/java-7-oracle/
Maven will access add bin/java then it will work just fine.
This solution work for me... just type export PATH=$JAVA_HOME/jre/bin:$PATH
in the terminal then run mvn -version
it will show the same error but with a log like this
which: no javac in (/jre/bin:/sbin:/bin:/usr/sbin:/usr/bin:/opt/puppetlabs/bin)
Warning: JAVA_HOME environment variable is not set.
Apache Maven 3.2.5 (12a6b3acb947671f09b81f49094c53f426d8cea1; 2014-12-14T22:59:23+05:30)
Maven home: /opt/apache-maven-3.2.5
Java version: 1.8.0_171, vendor: Oracle Corporation
Java home: /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.171-8.b10.el7_5.x86_64/jre
Default locale: en_US, platform encoding: UTF-8
OS name: "linux", version: "3.10.0-693.el7.x86_64", arch: "amd64", family: "unix"
now copy the Java home
path i.e. /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.171-8.b10.el7_5.x86_64/jre
in my case.
now type,
export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.171-8.b10.el7_5.x86_64/jre
and the error gets resolve. NOTE: paste your own path which is shown by your machine in mvn log at export JAVA_HOME.
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 ).
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
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
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
ReferenceURL : https://stackoverflow.com/questions/27319495/error-java-home-is-not-defined-correctly-executing-maven
'developer tip' 카테고리의 다른 글
javascript에서 연관 항목을 배열로 푸시하는 방법은 무엇입니까? (0) | 2021.01.10 |
---|---|
echo> & 2 "일부 텍스트"쉘 스크립팅에서 의미하는 바 (0) | 2021.01.10 |
InetAddress.getLocalHost () 실행 속도가 느림 (30 초 이상) (0) | 2021.01.10 |
iOS 11에서 Xcode 8 사용 (0) | 2021.01.10 |
제네릭과 함께 Collections.emptySet ()을 사용하면 할당에서 작동하지만 메서드 매개 변수로는 작동하지 않는 이유는 무엇입니까? (0) | 2021.01.10 |