Est-ce que quelqu'un connaît un moyen d'exécuter un programme hérité écrit en langage de script JavaFX 1.3 dans un environnement d'exécution Java 8 actuel? Ma conjecture est qu'il y a "simplement" des conflits de nom de classe maintenant que JavaFX est inclus dans le JRE.Exécuter le programme JavaFX 1.3 hérité sur Java 8
Mon programme donne avec l'une des exceptions suivantes (il y aura probablement plus si je creuse plus profond):
(Lors de l'instanciation un nœud étendu de CustomNode):
java.lang.VerifyError: Cannot inherit from final class at java.lang.ClassLoader.defineClass1(Native Method) at java.lang.ClassLoader.defineClass(ClassLoader.java:760) at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142) at java.net.URLClassLoader.defineClass(URLClassLoader.java:467) at java.net.URLClassLoader.access$100(URLClassLoader.java:73) at java.net.URLClassLoader$1.run(URLClassLoader.java:368) at java.net.URLClassLoader$1.run(URLClassLoader.java:362) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(URLClassLoader.java:361) at java.lang.ClassLoader.loadClass(ClassLoader.java:424) at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331) at java.lang.ClassLoader.loadClass(ClassLoader.java:357) at ......Main.initializeNodes(Main.fx:313)
(Lors de l'instanciation d'un groupe):
java.lang.NoSuchMethodError: javafx.scene.Group.<init>(Z)V at ......Main$Main$Script.applyDefaults$(Main.fx:131) at com.sun.javafx.runtime.FXBase.applyDefaults$(FXBase.java:307) at ......Main.<clinit>(Main.fx:7)
(Lorsque la création de certains noeuds):
java.lang.NoSuchMethodError: javafx.scene.CustomNode.VCNT$()I at ......SomeNode$SomeNode$Script.VCNT$(SomeNode.fx) at ......SomeNode$SomeNode$Script.count$(SomeNode.fx) at com.sun.javafx.runtime.FXBase.<init>(FXBase.java:274) at ......SomeNode$SomeNode$Script.<init>(SomeNode.fx) at ......SomeNode.<clinit>(SomeNode.fx)
Migration vers JavaFx8 ou d'une autre technologie est malheureusement pas une option.
La seule solution que je connaisse à ce jour utilise < 8.
JRE
Je vous conseille soit d'exécuter JavaFX 1.3 sur un environnement d'exécution Java pour lequel JavaFX 1.3 a été qualifié (par exemple Java 6), soit, de préférence, de migrer vers JavaFX 8+ ou une autre technologie. – jewelsea
Une autre chose que vous pouvez essayer est un [serveur Java 8 JRE fourni par Oracle] (http://www.oracle.com/technetwork/java/javase/downloads/index.html). Un serveur JRE ne contient aucune classe d'exécution JavaFX 8 ou code natif pouvant entrer en conflit avec votre installation de JavaFX 1.3. Je serais encore un peu sceptique que vous seriez en mesure de faire fonctionner une telle installation hybride, mais peut-être que cela vaut la peine d'essayer pour vous. – jewelsea
Oui, je n'y ai pas pensé. Avec un serveur JRE il semble en effet fonctionner sans problème, donc je l'accepterais comme une réponse correcte. Je n'ai juste pas mentionné que dans ce cas malheureux j'ai un contrôle limité sur le JRE installé, et même si je peux remplacer le JRE de l'utilisateur, j'ai besoin d'un JRE 32 bits (pour Windows), et Oracle ne fournit que Versions 64 bits du serveur JRE. Y a-t-il des alternatives? (J'ai trouvé quelques versions non officielles d'OpenJDK pour Windows, mais il semble que ce soit une "route très difficile" ...) – kmc