Dot.Blog

C#, XAML, Xamarin, UWP/Android/iOS

Cross-plateforme erreur “Major Version 51 is newer than 50”

RDXWoY7W[new:30/03/2015]L’erreur “… Major version 51 is newer than 50 …” apparait en compilation de projets cross-plateformes sous Xamarin Studio ou VS. Qu’est ce que cela veut dire et comment régler le problème ?

JAVAC

En compilant un projet cross-plateforme, qu’il s’agisse d’un projet PCL ou SAP (c’est à dire un projet avec librairie commune compilée en mode cross-plateforme, une PCL – Portable Class Library –  ou bien avec une librairie commune sous la forme d’un projet de code partagé, un SAP – Shared Asset Project) on peut obtenir des WARNINGS de compilation contenant un message du genre :

JAVAC: Warning: android\support\v4\widget\DrawerLayout Impl.class(android\support\v4\widget:DrawerLayoutImpl.class): major version 51 is newer than 50, the highest major version supported by this compiler. (Test1.Android)"

Bien entendu cela apparait dans les solutions où du code Android existe car Java est le langage naturel de cette plateforme et ce même si grâce à Xamarin on travaille en C#.

Javac est un outil qui lit les définitions des classes et des interfaces pour produire les fichiers bytecode des classes. Son rôle est donc crucial et on ne doit pas admettre avoir des tonnes d’avertissements lors de l’utilisation de cet outil (même de façon automatique comme c’est le cas avec Xamarin).

Alors que tout votre setup semble au point pourquoi vous retrouvez-vous avec au moins 100 WARNINGS de ce type même sur un projet vide ?

SDK Java et Android

Le problème vient du fait que Xamarin utilise Java 1.6 alors même que votre code est compilé en 1.7 (ce qui serait valable avec d’autres couples de versions plus anciennes ou à venir, le principe restant le même).

Pour régler le problème il faut s’assurer que le JDK 1.7 est bien installé sur votre machine et que Xamarin ne verra plus la version 1.6. Dès lors tout le monde sera au diapason sous JDK 1.7 et les affreux WARNINGS vont disparaitre !

Comment procéder ?

Premièrement sortez de Visual Studio, de Xamarin Studio, fermez les applications utilisant Java ou le JDK, etc, c’est un ensemble de précautions habituelles lorsqu’on met à jour une plateforme de développement.

Maintenant téléchargez et installer le JDK 1.7 (qui installera aussi le JRE7 donc normalement pas besoin de télécharger à part cet élément là) en vous rendant à cette adresse : https://jdk7.java.net/download.html

Une fois l’installation terminée allez dans le répertoire C:\Program Files (x86)\Java. Vous devriez y voir les dossiers “’jre7” et “jdk1.7.x_xx” les derniers numéros dépendent de la version disponible au moment où vous ferez la manœuvre. Si vous voyez bien ces deux dossiers tout est bon.

Mais vous devriez aussi voir “jdk1.6.x_xx” (ici aussi les derniers chiffres dépendent de la version exacte installée). Pour être sûr que cette version ne sera pas utilisée, plutôt que de la détruire dans l’immédiat (on ne sait jamais) le mieux est tout simplement de renommer le dossier en mettant par exemple un underscore devant le nom.

Et ça marche !

Reprenez Xamarin Studio, rouvrez le projet qui affichait les WARNINGS faites un nettoyage et une nouvelle construction.

Comme par magie, pas même un seul tout petit avertissement. Plus rien. C’est beau, ça marche !

Conclusion

Rien de bien méchant mais pas forcément évident de trouver la solution tout seul en se grattant le crâne … Mais grâce à Dot.Blog vous n’êtes pas seul, alors :

Bon Dev et … Stay Tuned !

blog comments powered by Disqus