Bonjour à tous.
Si je viens vous embetter aujourd'hui c'est qu'il m'arrive un truc bizarre, que je n'arrive pas à expliquer.
Voilà la situation:
J'ai besoin de faire tourner 2 applets differentes.
Une vieille qui ne marche qu'avec Java 6, et une récente qui ne marche qu'avec Java 7 ou 8.
J'ai donc installé Java 6, puis Java 8 afin d'avoir le deux.
Ensuite j'ai créé, signé et déployé un Deployment Ruleset qui dit à Java de lancer l'une avec Java 6* et l'autre avec Java 7+
Jusque là tout va bien et ca fonctionne.
Lorsque je lance ma vieille applet java 6, j'ai Java 8 qui démarre, lit le ruleset, se rend compte qu'il faut etre en Java 6 et "redemarre" en java 6 (je vois la console Java 8 se fermer et une console Java 6 s'ouvrir)
Sauf que... mon applet ne marche pas. (Bien sur, si je désinstalle la JRE8 et que je n'ai que la JRE6 elle marche parfaitement)
Et dans ma console java, j'ai les logs suivants
1 2 3
|
Java Web Start 11.60.2.27
Using JRE version 1.6.0_17-b04 Java HotSpot(TM) Client VM |
Donc c'est bien la preuve que mon ruleset à marché, et qu'il demarre mon applet en JRE6.
La partie etrange arrive:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| java.lang.UnsupportedClassVersionError: com/sun/javafx/runtime/VersionInfo : Unsupported major.minor version 52.0
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(Unknown Source)
at java.security.SecureClassLoader.defineClass(Unknown Source)
at java.net.URLClassLoader.defineClass(Unknown Source)
at java.net.URLClassLoader.access$000(Unknown Source)
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at com.sun.deploy.config.JfxRuntime.runtimeForPath(Unknown Source)
at com.sun.deploy.config.JREInfo.<init>(Unknown Source)
at com.sun.deploy.config.JREInfo.setInstalledJREList(Unknown Source)
at com.sun.deploy.config.ClientConfig.storeInstalledJREs(Unknown Source)
at com.sun.javaws.Main.launchApp(Unknown Source)
at com.sun.javaws.Main.continueInSecureThread(Unknown Source)
at com.sun.javaws.Main.access$000(Unknown Source)
at com.sun.javaws.Main$1.run(Unknown Source)
at java.lang.Thread.run(Unknown Source) |
Si j'ai bien compris ce que cette exception signiffie, la classe VersionInfo de javafx ne peut etre lancée (en JRE6) pare qu'elle est compilée pour la JRE8 (version 52)
Cela voudrait donc dire que quelque part, c'est le javafx de Java 8 qui est utilisé et non celui de Java 6.
Par quelle diablerie cela est il possible ??
J'ai également dans les logs de la console le message
Missing Permissions manifest attribute in main jar
Or ce message, ne concerne que la JRE 7 update 51 et au delà, puisque c'est à ce moment que l'attribut permission est devenu obligatoire dans les applets.
Je n'ai aucun contrôle (ni le code source) de cette applet, puisque c'est un vieux produit utilisé par la boite.
Comment puis-je faire en sorte que ce soit bien la JRE6 qui soit utilisée et pas un peu de JRE6 et un peu de JRE8 ?
Malgré cette exception l'applet continue de se lancer, comme si de rien était, mais fini par planter au bout d'un moment avec comme erreur:
1 2
|
Need to specify class name in environment or system property, or as an applet parameter, or in an application resource file: java.naming.factory.initial |
Je n'ai aucune explication sur ce qui peut provoquer cette erreur, à part ce mix JRE6/JR8 puisque lorsque je n'ai que la JRE6 installée tout marche bien sans aucune erreur.
Partager