J'ai une application Maven Eclipse que j'essaie d'exécuter via l'invite de commande à l'aide de la commande suivante:
Java -cp target/classes;"target/dependency/*" com.example.Main
Malheureusement, cela génère une erreur:
UnsupportedClassVersionError : unsupported major.minor version 51.0
J'ai fait quelques recherches et j'ai découvert que cela avait quelque chose à voir avec l'application en cours de compilation sur un JDK d'une version plus récente que le JRE sur lequel il fonctionne. Apparemment, le 51 signifie qu'il a été construit pour 1.7, mais je n'ai pas de JDK 7 sur mon ordinateur ...
J'ai donc fait en sorte que tout soit réglé sur la version 1.6:
le fichier system.properties à la racine contient
Java.runtime.version=1.6
Ajout de la propriété maven
<Java.version>1.6</Java.version>
Spécifié le plugin du compilateur maven dans mon pom.xml
<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>
J'ai vérifié la version de ma Java en utilisant la commande Java -version qui a renvoyé
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)
Et une mise à jour de mon projet après avoir défini le plug-in maven-compiler-plugin a permis à Eclipse de définir automatiquement le niveau du compilateur sur 1.6, le niveau de facette du projet sur 1.6 et d'ajouter la bibliothèque système JavaSE-1.6 jre à mon projet.
Je n'ai donc absolument aucune idée d'où vient ce JDK 1.7. Je n'ai jamais installé JDK 1.7 sur cet ordinateur pour commencer ...
De plus, à l'origine, le plugin maven-compiler n'était pas présent, donc il a été construit avec 1.5 je suppose. Mais j'ai fait un mvn clean install
, puis un mvn package
, puis réessayé la commande une fois que tous les paramètres ont été ajustés et qu'elle génère toujours la même erreur.
Vous avez probablement une dépendance qui nécessite Java 1.7
Vous utilisez probablement une dépendance qui nécessite Java SE 7.
Si tel est le cas, mettez à niveau vers Java SE 7 (recommandé si vous utilisez le JRE d'Oracle sans contrat de support, car Java SE 6 atteint la fin) de vie en février) ou remplacer cette dépendance.