JavaFX in Java Applikation einbinden

lazydog

Mitglied
Hallo,

ich bin neu hier und nicht sicher, ob ich mit diesem Anliegen hier richtig liege (also bitte gerne umhängen!)

Ich muss für ein Projekt eine Antwort auf die Frage finden, ob und wie ich ein JavaFX Objekt in eine bestehende Java Anwendung einbinden kann. Ich habe hier im Forum den Hinweis auf die Quelle: Calling JavaFX Classes from Pure Java Code gerfunden und das entsprechende Sample ausprobiert. Das Ergebnis ist allerdings negativ:
Code:
Exception in thread "main" java.lang.NoClassDefFoundError: javafx/scene/chart/PieChart$Data
    at javatest.MyChart$1Local$1.applyDefaults$(com.exadel.javafx.ide.internal.core.JavaFXFileObject@378c01:16)
    at javatest.MyChart$1Local$1.doit$$0(com.exadel.javafx.ide.internal.core.JavaFXFileObject@378c01)
    at javatest.MyChart.addData(com.exadel.javafx.ide.internal.core.JavaFXFileObject@378c01:13)
    at javatest.JavaTest.main(JavaTest.java:20)
Caused by: java.lang.ClassNotFoundException: javafx.scene.chart.PieChart$Data
    at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:248)
    ... 4 more

Die Rahmenbedingungen sind Eclipse 3.6.1 und das Exadel JavaFX Plugin 1.3.5, Classpath scheint für mich i.O. zu sein und reiner JavaFX Code funktioniert anstandslos!

Kann mir da irgendjemand weiterhelfen?

Vielen Dank für jeden Tipp!
ld
 
ich habe zwischenzeitlich ein Beispiel gefunden, das das macht was ich wollte (s.u.):

1. Main.java
Java:
package evaljavafx;

import javax.script.ScriptEngineManager;
import com.sun.javafx.api.JavaFXScriptEngine;

public class Main {

  public static void main (String[] args) {
    ScriptEngineManager manager =
        new ScriptEngineManager();

    JavaFXScriptEngine fxEngine = 
        (JavaFXScriptEngine) manager.getEngineByName("javafx");

    try {

      String param = "String to be printed by JFX";

      String script = String.format (
          "evaljavafx.MyJavaFXClass {property: \"%s\"}", param);

      Object o = fxEngine.eval(script);

      fxEngine.invokeMethod(o, "printProperty");
    } catch (Exception ex) {
      ex.printStackTrace();
    }		
  }
}

2. MyJavaFXClass.fx
Java:
package evaljavafx;

import java.lang.System;

public class MyJavaFXClass {

    public var property: String;

    public function printProperty() {
        System.out.println(property);
    }
}

Wichtig hier: die Library javafxc.jar in Classpath aufnehmen!

Gruss
ld
 
ICh hab das mit dem ScriptEngine auch mal ausprobiert, aber als Rückgabe kam 'null'. Es kommt warscheinlich darauf an, ob es eine Java, oder eine JavaFx application ist. Und wenn du Chats anzeigen möchtest Empfehle ich dir JFreeChart zu nehmen. Sobald man Java und JavaFx mischt, bekommt man ein durcheinander.
 
Zuletzt bearbeitet:

Zurück
Oben