web-dev-qa-db-ja.com

なぜMavenはJDK 1.6を使っていますが私のJavaバージョンは1.7です

私はMaven、そしてMacOSも初めてです。

私は自分の端末にセットアップメイヴンを持っていて、バージョン設定を取得するとき(mvn -vを使って)、JDK 1.7がインストールされているのにJDK 1.6が使われているようです。どうかしましたか?

私が入力するコマンドはこれらです:

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"
153
Ninja

次を~/.mavenrcに追加してください。

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

第二の解決策:

echo export "Java_HOME=\$(/usr/libexec/Java_home)" >> ~/.bash_profile

222
Gaurav Vaish

入る

/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

今すぐそれが動作します。

45
Oskar

またできます、

<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>
39
DEREK LEE

どのJavaバージョン用にコンパイルするかをmavenに明示的に指示することもできます。あなたのpomに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にインポートした場合は、おそらく、あなたのMavenランナーが使用しているデフォルトコンパイラ用のMaven設定がIDEにあります。

26
redFIVE

それは私を助けました。 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>
8
Sergey Luchko

Eclipseユーザーのために。たとえば、クリーンパッケージを実行する実行設定がある場合。

「実行構成」パネルには、どのランタイムに対して実行するかを指定できる「JRE」タブがあります。この設定は、pom.xmlの内容をすべてオーバーライドすることに注意してください。

3
Yonatan Abrego

私はこの質問に遅れていますが、私はMacOSでJDKのバージョンを処理するための最良の方法は、で説明されているスクリプトを使用することであると思います。 http://www.jayway.com/2014/01/15/how-to -switch-jdk-version-on-mac-os-x-maverick /

2
Yuri

互換性を確認してください。私は何時間もmvn 3.2.1jdk 1.6.0_37に苦労しました。すべての変数は設定されていましたが機能していませんでした。最後に私はjdk to 1.8.0_60mvn 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;
2
Vikas Singh

@MasterGauravのソリューションは完璧に機能しています、

私は通常、Javaスイッチのことを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.7を実行してJavaとmavenの両方に1.7バージョンを使用できます。

1
Wei Qiu