2015-11-16 1 views
0

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
+0

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

+0

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

+0

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

Répondre

0

Il y a le projet Visage qui voulait continuer à soutenir pour le script JavaFX, si je me souviens bien. Je ne connais pas le statut du projet.

Je sais que vous avez mentionné la migration vers JavaFX 8 n'est pas une option, mais c'est toujours ce que je recommande.

+0

Merci pour votre suggestion. Malheureusement Visage semble être très inactif maintenant, et la dernière fois que j'ai vérifié, il était loin d'être complet en termes de couverture de toutes les fonctionnalités/éléments graphiques de JavaFX 1.3, et nécessitait également des efforts qui pourraient être assimilés à une "migration". Peut-être vaut-il la peine d'essayer si j'avais le temps ... – kmc