155

私の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( return )を使用していecho $0ます-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 を複数回 source(d) しました。

4

18 に答える 18

153

Maven インストールのスクリプトをチェックしてmvn、コマンドがどのように構築されているかを確認します。おそらく、あなたか他の誰かが a をハードコーディングしてJAVA_HOME忘れてしまったのでしょう。

于 2012-12-26T16:50:18.967 に答える
110

新しいバージョンの 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コードをコンパイルすることに関する質問はにバインドされていますすぐに現れます:-)

于 2012-12-26T16:14:40.620 に答える
19

Maven のバージョンを確認する必要があります。

mvn -version

Maven がコンパイルに使用する Java バージョンが表示されます。必要に応じて、JAVA_HOME をリセットする必要がある場合があります。

于 2013-03-27T11:38:12.683 に答える
19

私も同じ問題を抱えていました。これは、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
于 2014-04-03T20:44:12.940 に答える
4

診断:

「mvn --version」を実行すると、Maven が使用する Java バージョンを確認できます。

Debian のソリューション:

mvn スクリプトは、javac (どの javac) を探すかによって、JAVA_HOME 環境変数を内部的に設定します。したがって、複数の 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で詳しく説明されているように、これにより、さまざまな Java ツールのすべての代替手段が変更されるためです (12 ほどあります)。

于 2014-05-28T22:11:45.373 に答える
2

新しいプラグインを試していただけますか。Mavenサイトで:

<version>3.0</version>

以下も見ました。

<compilerVersion>1.7</compilerVersion>
于 2012-12-26T16:14:06.723 に答える
2

ここでどの OS が使用されているかはわかりませんが、update-java-alternatives を使用して多くの Java バージョン futzing un debian/ubuntu を排除し、デフォルトの jvm システム全体を設定できます。

#> update-java-alternatives -l
java-1.6.0-openjdk-amd64 1061 /usr/lib/jvm/java-1.6.0-openjdk-amd64
java-1.7.0-openjdk-amd64 1071 /usr/lib/jvm/java-1.7.0-openjdk-amd64
java-6-sun 63 /usr/lib/jvm/java-6-sun
java-7-oracle 1073 /usr/lib/jvm/java-7-oracle

新しいものを設定するには、次を使用します。

#> update-java-alternatives -s java-7-oracle

ほとんどのアプリで JAVA_HOME を設定する必要はありません。

于 2014-03-31T23:51:53.347 に答える
2

Eclipseでプロジェクトを右クリックし、「実行構成」を開きます..そこでjreバージョンを確認してください。ビルドパスでバージョンを変更した後でも、Eclipseのデフォルトでこれが変更されない場合があります。

于 2014-10-13T12:21:20.377 に答える
1

{JAVA_1_4_HOME}/bin/javacyou も試すことができます...

<plugin>
        <artifactId>maven-compiler-plugin</artifactId>
        <configuration>
                <source>1.7</source>
                <target>1.7</target>
                <showDeprecation>true</showDeprecation>
                <showWarnings>true</showWarnings>
                <executable>{JAVA_HOME_1_7}/bin/javac</executable>
                <fork>true</fork>
        </configuration>
    </plugin>
于 2013-04-09T08:23:27.610 に答える
0

ファイルメニュー - >プロジェクト構造に移動し、プロジェクトSDKを1.7に、プロジェクト言語レベルを7に変更するまで、IntelliJ IDEA 14でこの問題が発生しました。

于 2015-05-05T15:59:56.033 に答える
0

わかりました、私もこの問題を自分で解決しました。Java_HOME の方が重要です。Maven プラグインのソース/ターゲット プロパティと比較してバージョンが低いか、バージョンがない場合、このエラーが発生します。

JAVA_HOME に適切なバージョンがあり、それが PATH に含まれていることを確認してください。

于 2013-09-30T19:07:56.673 に答える
0

間違ったバージョンの Java を指定している可能性があります。java -version (端末内) を使用して、使用している Java のバージョンを確認します。最新の Maven コンパイラ バージョンについては、maven-compile-pluginに移動します

<plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>3.1</version>
            <configuration>
                <source>1.6</source>
                <target>1.6</target>
            </configuration>
        </plugin>
于 2014-08-30T12:27:09.603 に答える