次のコマンドを使用してコマンドプロンプトを実行しようとしている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コマンドを使用してJava -version
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
、すべての設定が調整された後、コマンドを再試行しても、同じエラーがスローされます。
おそらくあなたはJava 1.7を必要とする依存関係を持っている
おそらくJava SE 7。
この場合、Java SE 7にアップグレードします(サポート契約なしでOracleからJREを使用している場合は、Java SE 6 of Life of February)またはこの依存関係を置き換えます。