내 pom 파일 목록
<project>
<build>
<pluginManagement>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.0</version>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.12.4</version>
</plugin>
</plugins>
</pluginManagement>
<plugins>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.7</source>
<target>1.7</target>
</configuration>
</plugin>
</plugins>
...
그러나 mvn clean install
, 나는
[INFO] -------------------------------------------------------------
[ERROR] COMPILATION ERROR :
[INFO] -------------------------------------------------------------
[ERROR] Failure executing javac, but could not parse the error:
javac: invalid target release: 1.7
Usage: javac <options> <source files>
/usr/bin/java -version
입니다 ( which java
여기 포인트)
java version "1.7.0_10"
Java(TM) SE Runtime Environment (build 1.7.0_10-b18)
Java HotSpot(TM) 64-Bit Server VM (build 23.6-b04, mixed mode)
javac
또한 올바른 Java 버전을 가리 킵니다.
/usr/bin/javac -> /Library/Java/JavaVirtualMachines/jdk1.7.0_10.jdk/Contents/Home/bin/javac
이 기계에서는 zsh
( echo $0
returns -zsh
)를 사용하고 있습니다.
내에서는 다음 .zshrc
을 정의했습니다.
33 # HOME
34 JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.7.0_10.jdk/Contents/Home
35 SCALA_HOME=/Library/Scala/current
36 FORGE_HOME=~/tools/forge/
37
38 # PATH
39 PATH="/Library/Frameworks/Python.framework/Versions/3.2/bin:${PATH}"
40 PATH=${PATH}:${JAVA_HOME}/bin
41 PATH=${PATH}:/bin/
42 PATH=${PATH}:/sbin/
43 PATH=${PATH}:/usr/bin/
44 PATH=${PATH}:/usr/sbin/
45 PATH=${PATH}:/opt/local/bin/
46 PATH=${PATH}:/opt/local/sbin/
47 PATH=${PATH}:/usr/local/git/bin
48 PATH=${PATH}:/usr/local/git/sbin
49 PATH=${PATH}:/Applications/Xcode.app/Contents/Developer/usr/bin
50 PATH=${PATH}:${SCALA_HOME}/bin
51 PATH=${PATH}:${FORGE_HOME}/bin
52
53 export PATH
내가 실행할 때 mvn clean install --debug
실제로 Java 6을 사용한다는 것을 알았습니다.
1 Apache Maven 3.0.3 (r1075438; 2011-02-28 11:31:09-0600)
2 Maven home: /usr/share/maven
3 Java version: 1.6.0_35, vendor: Apple Inc.
4 Java home: /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home
어디에서 정의 할 수 있습니까? .zshrc를 여러 번 소스 (d)했습니다.
답변
mvn
maven 설치에서 스크립트를 확인하여 명령을 작성하는 방법을 확인하십시오. 아마도 당신이나 다른 누군가가 JAVA_HOME
거기에 하드 코딩을 하고 잊어 버렸을 것입니다.
답변
최신 버전의 maven 컴파일러 플러그인을 사용해보십시오.
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.2</version>
<configuration>
<source>1.7</source>
<target>1.7</target>
</configuration>
</plugin>
또한 maven으로 소스 파일 인코딩을 지정하는 것이 전 세계적으로 더 잘 수행됩니다.
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
편집 :이 답변이 여전히 주목 받고 있으므로 최신 값 (최신 편집 기준)은 maven 컴파일러 플러그인의 경우 3.2이고 java의 경우 1.8입니다 .maven을 통해 Java 8 코드를 컴파일하는 방법에 대한 질문은 다음과 같습니다. 곧 나타납니다 🙂
답변
나는 같은 문제가 있었고 이것을 해결하기 위해이 블로그 기사를 따르십시오 : http://www.mkyong.com/java/how-to-set-java_home-environment-variable-on-mac-os-x/
$ vim .bash_profile
export JAVA_HOME=$(/usr/libexec/java_home)
$ source .bash_profile
$ echo $JAVA_HOME
/Library/Java/JavaVirtualMachines/1.7.0.jdk/Contents/Home
@mkyong 에게 특별한 tks
편집 : 지금 사용하고 있습니다 : jEnv + sdkman
답변
아래 태그에 대해서는 pom.xml을 확인하십시오.
<properties>
<maven.compiler.source>1.7</maven.compiler.source>
<maven.compiler.target>1.7</maven.compiler.target>
</properties>
필요한 jdk 버전을 가리켜 야합니다
답변
Maven 버전을 확인해야합니다.
mvn -version
Maven이 컴파일에 사용하는 Java 버전을 찾을 수 있습니다. 필요한 경우 JAVA_HOME을 재설정해야 할 수도 있습니다.
답변
나는 같은 문제가 있었다. Maven 스크립트가 아래의 CurrentJDK 링크를보고 1.6 JDK를 찾기 때문입니다. 최신 JDK를 설치하더라도이 문제는 해결되지 않습니다. $ HOME / .bash_profile 스크립트에서 JAVA_HOME을 설정할 수는 있지만 대신 다음과 같이 기호 링크를 수정하기로 선택했습니다.
ls -l /System/Library/Frameworks/JavaVM.framework/Versions/
total 64
lrwxr-xr-x 1 root wheel 10 30 Oct 16:18 1.4 -> CurrentJDK
lrwxr-xr-x 1 root wheel 10 30 Oct 16:18 1.4.2 -> CurrentJDK
lrwxr-xr-x 1 root wheel 10 30 Oct 16:18 1.5 -> CurrentJDK
lrwxr-xr-x 1 root wheel 10 30 Oct 16:18 1.5.0 -> CurrentJDK
lrwxr-xr-x 1 root wheel 10 30 Oct 16:18 1.6 -> CurrentJDK
lrwxr-xr-x 1 root wheel 10 30 Oct 16:18 1.6.0 -> CurrentJDK
drwxr-xr-x 9 root wheel 306 11 Nov 21:20 A
lrwxr-xr-x 1 root wheel 1 30 Oct 16:18 Current -> A
lrwxr-xr-x 1 root wheel 59 30 Oct 16:18 CurrentJDK -> /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents
CurrentJDK는 1.6.0.jdk를 가리 킵니다.
이 문제를 해결하려면 다음 명령을 실행하십시오 (설치된 버전을 확인하고 적절히 조정해야합니다).
sudo rm /System/Library/Frameworks/JavaVM.framework/Versions/CurrentJDK
sudo ln -s /Library/Java/JavaVirtualMachines/jdk1.7.0_51.jdk/Contents/ /System/Library/Frameworks/JavaVM.framework/Versions/CurrentJDK
답변
진단 :
“mvn –version”을 실행하여 Maven이 사용하는 Java 버전을 확인할 수 있습니다
데비안 솔루션 :
mvn 스크립트는 javac (javac)를 찾아서 JAVA_HOME env 변수를 내부적으로 설정합니다. 따라서 여러 Java 버전 (예 : JDK 6 및 JDK 7)을 동시에 설치하고 Debian Alternatives 시스템을 사용하여 “java”에 대한 대안을 JDK 7로 변경하더라도 mvn은 여전히 JDK 6을 사용합니다. “javac”에 대한 대안도 변경해야합니다. 예 :
# update-alternatives --set javac /usr/lib/jvm/java-7-openjdk-amd64/bin/javac
편집하다:
사실, 더 나은 해결책은 update-java-alternatives를 사용하는 것입니다 (예 :
# update-java-alternatives -s java-1.7.0-openjdk-amd64
에 설명 된대로 https://wiki.debian.org/JavaPackage 이 변화하기 때문에, 모든 다양한 자바 툴에 대한 대안을 (그래서 다스있다).