# JavaFX in Java Applikation einbinden



## lazydog (13. Okt 2010)

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:

```
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


----------



## lazydog (22. Okt 2010)

ich habe zwischenzeitlich ein Beispiel gefunden, das das macht was ich wollte (s.u.):

1. Main.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

```
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


----------



## Runtime (23. Okt 2010)

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.


----------

