# @Inject



## Nemesys88 (5. Mrz 2017)

Hallo zusammen!

Ich möchte ein einfaches Beispiel mit einem Interface machen, das ich per @Inject in einen Konstruktor injiziere. Es klappt aber einfach nicht... Ich werd durch Beispiele im Netz einfach nicht schlauer, weil das alles Beispiele für Web-Anwendungen sind mit jsp und so nem Zeug, dabei will ich eine normale Java-EE-Anwendung bauen.


```
package sample;

import javafx.application.Application;
import javafx.fxml.FXMLLoader;
import javafx.scene.Parent;
import javafx.scene.Scene;
import javafx.stage.Stage;

public class Main extends Application {

    private OutputEJB outputEJB;

    @Override
    public void start(Stage primaryStage) throws Exception{
        Parent root = FXMLLoader.load(getClass().getResource("sample.fxml"));
        primaryStage.setTitle("Hello World");
        primaryStage.setScene(new Scene(root, 300, 275));
        primaryStage.show();
    }

    public static void main(String[] args) {
        launch(args);
    }
}
```


```
package sample;

import javax.inject.Inject;

public class Controller {

    private OutputService outputService;

    @Inject
    public Controller(OutputService outputService) {
        this.outputService = outputService;
        outputService.printName();
    }

}
```


```
package sample;

public interface OutputService {

    void printName();

    void printAge();
}
```


```
package sample;

public class OutputEJB implements OutputService{

    public void printName() {
        System.out.println(("Toni"));
    }

    public void printAge() {
        System.out.println(("35"));
    }
}
```

Was fehlt denn noch, damit das Inject funktioniert? 
Er gibt zzt. eine Fehlermeldung aus ("Caused by: java.lang.NoSuchMethodException: sample.Controller.<init>()") weil er den Konstruktor nicht findet/abarbeiten kann...

Danke für eure Tipps.

mfG


----------



## SeriousD0nkey (5. Mrz 2017)

Wenn du CDI in JavaFX nutzen willst musst die die Anwendung über den Weld starten. (So zumindest mein letzter Stand). 

http://www.tutego.de/blog/javainsel/2013/10/javafx-cdi-weld/


----------



## Nemesys88 (5. Mrz 2017)

Das hat geholfen - mein kleines Beispiel funktioniert jetzt!
Vielen Dank.


----------



## klauskarambulut (5. Mrz 2017)

Afterburner FX, minimales JavaFX Framework das DI integriert hat. Funktioniert auch ohne JEE, Applicationserver usw.

http://afterburner.adam-bien.com/


----------



## Nemesys88 (5. Mrz 2017)

Danke.


----------



## looparda (5. Mrz 2017)

Ich habe Gluon Ignite mit Guice in einer JavaFX Anwendung am laufen. Vielleicht auch einen Blick wert für dich.


----------



## Nemesys88 (6. Mrz 2017)

Und nochmal danke


----------

