Question

J'essaye d'utiliser JavaFX 2 à partir d'une simple vue d'éclipse, mais j'obtiens un

java.lang.UnsatisfiedLinkError: URL non valide pour la classe: bundleresource: //435.fwk1827795025/com/sun/glass/utils/NativeLibLoader.class

Après quelques recherches avec JAD, j'ai découvert que NativeLibLoader avait une vérification très intéressante:

if(!classUrlString.startsWith("jar:file:") || classUrlString.indexOf("!") == -1)
    throw new UnsatisfiedLinkError((new StringBuilder()).append("Invalid URL for class: ").append(classUrlString).toString());

Cela signifie-t-il que javafx ne peut pas être utilisé à partir du bundle OSGi?Veuillez me prouver le contraire.

Était-ce utile?

La solution

Des mises à jour du chargeur JavaFX pour être plus compatible avec OSGI sont prévues pourla version «Lombard» (qui correspond à la période JavaFX 3.0 , c'est-à-dire 2013).En attendant, vous pouvez rencontrer des problèmes lors de l'utilisation de JavaFX à partir d'un bundle OSGI.D'autres problèmes liés à OSGI peuvent être trouvés en recherchant OSGI dans le JavaFX Jira (tout le monde peut s'inscrire pour voir les bogueset les problèmes énumérés ici). Tom Schindl , le créateur du e (fx) clipse pour JavaFX dans Eclipse, serait le meilleur point de contact avec une expérience dans l'intégration de JavaFX dans Eclipse.

Autres conseils

Je viens de publier un didacticiel pas à pas sur la création et l'exportation d'un Eclipse ViewPart qui utilise JavaFX 2.0.Voir http://www.efxclipse.org/trac/wiki/Tutorial3

e (fx) clipse a maintenant un assistant pour cela.Veuillez jeter un œil à: http://www.efxclipse.org/trac/wiki/Tutorial2

Vous pouvez rapidement tester votre vue avec ce code Hello World:

public class MyViewPart extends FXViewPart {

    @Override
    protected Scene createFxScene() {
        Button btn = new Button();
        btn.setText("Say 'Hello World!'");
        btn.setOnAction(new EventHandler<ActionEvent>() {
            @Override
            public void handle(ActionEvent arg0) {
                System.out.println("Hello World!");
            }
        });
        StackPane root = new StackPane();
        root.getChildren().add(btn);

        return new Scene(root,300,200);
    }

    @Override
    protected void setFxFocus() {}
}

Pls.suivez ces étapes simples:

  1. Créer un "plugin à partir d'archives JAR existantes" dans Eclipse

    • ajouter External ..jre / lib / jfxrt.jar (à partir de jdk1.7)
    • cliquez sur Target Platform "an OSGI framework"!
    • désélectionnez "Décompresser".
  2. Cliquez sur META-INF / MANIFEST.MF - dans l'onglet Runtime Tout exporter Packages (avec "Ajouter").

  3. Ajoutez le "Fx_Osgi_Plugin" créé comme plugin requis dans l'onglet "Dépendances" pour chaque plugin.xml.

  4. Dans .product, cliquez sur "Ajouter les plug-ins requis" dans l'onglet Dépendances.

Désormais, les plugins utilisant Java-Fx font référence à un Osgi Java-Fx Version.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top