33

次のコマンドを使用して、コマンド プロンプトから実行しようとしている Maven Eclipse アプリケーションがあります。

java -cp target/classes;"target/dependency/*" com.example.Main

残念ながら、エラーがスローされます。

UnsupportedClassVersionError : unsupported major.minor version 51.0

掘り下げてみたところ、アプリケーションが実行されている JRE よりも新しいバージョンの JDK でコンパイルされているアプリケーションに関係があることがわかりました。どうやら51は1.7用にビルドされたことを意味しますが、私のコンピューターにはJDK 7がありません...

したがって、すべてがバージョン 1.6 に設定されていることを確認しました。

ルートの system.properties ファイルには

java.runtime.version=1.6

maven プロパティを追加しました

<java.version>1.6</java.version>

私のpom.xmlでmavenコンパイラプラグインを指定しました

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-compiler-plugin</artifactId>
    <version>2.1</version>
    <configuration>
        <source>1.6</source>
        <target>1.6</target>
    </configuration>
</plugin>

返されたコマンド java -version を使用して、Javaのバージョンを確認しました

Java version "1.6.0_38"
Java(TM) SE Runtime Environment (build 1.6.0_38-b05)
Java HotSpot(TM) 64-bit Server VM (build 20.13-b02, mixed mode)

また、maven-compiler-plugin を設定した後にプロジェクトを更新すると、Eclipse によって自動的にコンパイラ レベルが 1.6 に設定され、プロジェクト ファセット レベルが 1.6 に設定され、JavaSE-1.6 jre システム ライブラリがプロジェクトに追加されます。

そのため、この JDK 1.7 がどこから来たのかまったくわかりません。そもそも、このコンピューターにJDK 1.7をインストールしたことはありません...

あと、もともとmaven-compiler-pluginがなかったので1.5でビルドしたのかな。しかし、すべての設定を調整した後、 を実行し、mvn clean install次にmvn packageを実行し、コマンドを再試行しましたが、それでも同じエラーがスローされます。

4

2 に答える 2

44

おそらく、Java1.7を必要とする依存関係があります

于 2013-03-22T10:32:26.847 に答える
14

おそらく、JavaSE7を必要とする依存関係を使用しています。

この場合は、Java SE 7にアップグレードするか(Java SE 6が2月に保守終了に達したため、サポート契約なしでOracleからJREを使用している場合に推奨)、この依存関係を置き換えます。

于 2013-03-22T10:11:38.380 に答える