Maven이 JDK 1.6을 사용하지만 Java 버전이 1.7 인 이유


159

나는 maven과 MacOS를 처음 사용합니다.

터미널에 maven을 설정했으며 (을 사용하여 mvn -v) 버전 설정을 가져올 때 JDK 1.6을 사용하는 반면 JDK 1.7을 설치 한 것 같습니다. 문제가 있습니까?

내가 입력 한 명령은 다음과 같습니다.

blues:helloworld Ninja$ java -version
java version "1.7.0_05"
Java(TM) SE Runtime Environment (build 1.7.0_05-b06)
Java HotSpot(TM) 64-Bit Server VM (build 23.1-b03, mixed mode)`
blues:helloworld Ninja$ mvn -v
Apache Maven 3.1.0 (893ca28a1da9d5f51ac03827af98bb730128f9f2; 2013-06-28 10:15:32+0800)
Maven home: /usr/local/Cellar/maven/3.1.0/libexec
Java version: 1.6.0_51, vendor: Apple Inc.
Java home: /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home
Default locale: zh_CN, platform encoding: EUC_CN
OS name: "mac os x", version: "10.8.4", arch: "x86_64", family: "mac"

2
PATH 및 JAVA_HOME 변수를 게시 할 수 있습니까?
Jeanne Boyarsky

@JeanneBoyarsky blues : helloworld Ninja $ echo $ JAVA_HOME blues : helloworld Ninja $ echo $ PATH / usr / bin : / bin : / usr / sbin : / sbin : / usr / local / bin : / usr / local / git / bin
닌자

@JeanneBoyarsky이게 당신이 원하는가요?
닌자

3
나는 여성입니다 (따라서 "sir"라고 말하는 것이 틀 렸습니다). JAVA_HOME을 설정하십시오. 문제가이 문제와 비슷한 것 같습니다 : stackoverflow.com/questions/13752519/…
Jeanne Boyarsky

2
@JeanneBoyarsky 내 무례 함을 용서하십시오. 주어진 URL은 내가 만나는 문제입니다. 대단히 감사합니다 ~
Ninja

답변:


227

에 다음을 추가하십시오 ~/.mavenrc.

export JAVA_HOME=/Library/Java/JavaVirtualMachines/{jdk-version}/Contents/Home

두 번째 해결책 :

echo export "JAVA_HOME=\$(/usr/libexec/java_home)" >> ~/.bash_profile


네, 정답입니다. JAVAHOME이 필요합니다. 대신 / etc / profile을 편집하십시오
Ninja

8
~ / .mavenrc에 추가하면 다른 앱이 영향을받지 않습니다. mvn만이이 버전의 JDK를 선택합니다. :)
Gaurav Vaish 2:14의

43
수출 JAVA_HOME = $ (/ usr / libexec / java_home -v 1.7)
jla

1
.mavenrc 솔루션이 완벽하게 작동했습니다. 또한 JRE 1.8이 아닌 JDK 1.8 만 설치했습니다. 고 라브 감사합니다!
timothyclifford

2
당신이 Mac에서 jenv를 사용하는 경우가있을 수 있습니다 export JAVA_HOME="$HOME/.jenv/versions/`jenv version-name`"에 대한 ~/.mavenrc파일.
Eddy

46

들어가다

/System/Library/Frameworks/JavaVM.framework/Versions

CurrentJDK심볼릭 링크를 업데이트하여

/Library/Java/JavaVirtualMachines/YOUR_JDK_VERSION/Contents/

예 :

cd /System/Library/Frameworks/JavaVM.framework/Versions
sudo rm CurrentJDK
sudo ln -s /Library/Java/JavaVirtualMachines/jdk1.8.0.jdk/Contents/ CurrentJDK

이제 즉시 작동합니다.


1
CurrentJDK symlink 트릭은 maven 3.3.1에서 더 이상 작동하지 않지만 ~ / .mavenrc를 수정하면 작동합니다.
Stefan L

41

당신은 또한 할 수 있습니다

<properties>
      ...  

      <!-- maven-compiler-plugin , aka JAVA Compiler 1.7 -->
      <maven.compiler.target>1.7</maven.compiler.target>
      <maven.compiler.source>1.7</maven.compiler.source>

      ...  
</properties>

5
받는다는 그것은 단지와 충돌 자바 6. 사용하여 실행하는 경우 그 작업을하지 않습니다[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.1:compile (default-compile) on project {projectname}: Fatal error compiling: invalid target release: 1.7 -> [Help 1]
개빈 S. 얀시

27

어떤 자바 버전을 컴파일할지 maven에게 명시 적으로 알려줄 수도 있습니다. 당신은 maven-compiler-plugin당신의 치어에 추가를 시도 할 수 있습니다 .

<project>
  [...]
  <build>
    [...]
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-compiler-plugin</artifactId>
        <version>3.1</version>
        <configuration>
          <source>1.7</source>
          <target>1.7</target>
        </configuration>
      </plugin>
    </plugins>
    [...]
  </build>
  [...]
</project>

maven 프로젝트를 IDE로 가져온 경우 IDE에서 maven 러너가 사용하는 기본 컴파일러에 대한 maven 설정이있을 수 있습니다.


감사합니다. 그러나 나는 시작하지 않았다. 난 그냥 'mvn -v'... 이유는 JAVA_HOME을 할당하지 않기 때문입니다
Ninja

컴파일 된 코드에만 영향을줍니다. 나는이 문제에 달려 내가 사용 된 외부 라이브러리는 자바 7 컴파일 및 메이븐은 자바 6을 실행하려고했기 때문에 여기 온

받는다는 그것은 단지와 충돌 자바 6. 사용하여 실행하는 경우 그 작업을하지 않습니다[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.1:compile (default-compile) on project {projectname}: Fatal error compiling: invalid target release: 1.7 -> [Help 1]
개빈 S. 얀시

이것은 기본 컴파일러의 IDE에서 maven 설정이 1.7보다 낮지 만 설치된 jdk가 1.7보다 높은 경우에 작동합니다.
John Doe

9

그것은 나를 도왔다. pom.xml에 추가하십시오.

기본적으로 maven 컴파일러 플러그인은 Java 1.5 또는 1.6을 사용하므로 pom.xml에서 재정의해야합니다.

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <configuration>
                <source>1.8</source>
                <target>1.8</target>
            </configuration>
        </plugin>
    </plugins>
</build>

4

Eclipse 사용자의 경우. 예를 들어 패키지를 정리하는 실행 구성이있는 경우

실행 구성 패널에는 실행할 런타임에 대해 지정할 수있는 JRE 탭이 있습니다. 이 구성은 pom.xml에있는 모든 것을 대체합니다.



2

호환성을 확인하십시오. 나는 고생 mvn 3.2.1하고 jdk 1.6.0_37많은 시간 동안. 모든 변수가 설정되었지만 작동하지 않았습니다. 마침내 나는 업그레이드 jdk to 1.8.0_60했고 mvn 3.3.3그것이 효과가있었습니다. 다음과 같은 환경 변수 :

JAVA_HOME=C:\ProgramFiles\Java\jdk1.8.0_60 
MVN_HOME=C:\ProgramFiles\apache-maven\apache-maven-3.3.3 
M2=%MVN_HOME%\bin extend system level Path- ;%M2%;%JAVA_HOME%\bin;

1

@MasterGaurav의 솔루션은 완벽하게 작동합니다.

나는 보통 자바 스위치를 zsh 함수에 넣었다.

alias java_ls='/usr/libexec/java_home -V 2>&1 | grep -E "\d.\d.\d[,_]" | cut -d , -f 1 | colrm 1 4 | grep -v Home'

function java_use() {
    export JAVA_HOME=$(/usr/libexec/java_home -v $1)
    echo export "JAVA_HOME=$(/usr/libexec/java_home -v $1)" > ~/.mavenrc
    export PATH=$JAVA_HOME/bin:$PATH
    java -version
}

그런 다음 java_ls머신에서 사용 가능한 모든 jvm을 모두 가져 와서 java_use 1.7Java 및 maven 모두에 1.7 버전을 사용하도록 실행할 수 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.