I am doing a Javafx
application in Apache Felix
along with some experiments using iPOJO
.
First is I called the Application.launch()
method in a different class and then start an another class containing the iPOJO @Requires
like this:
public class JavafxApp extends Application {
@Override
public void start(Stage primaryStage){
/* Do nothing here because I thought I can initialize JavaFX in a different class */
}
public static void start(){
Platform.runLater(() -> {
launch(JavafxApplication.class);
});
}
}
@Component
@Instantiate
public class MyApplication {
@Requires
LibraryClass class;
@Validate
public void start(){
JavafxApp.start();
class.someMethod();
}
}
This implementation throws this exception, java.lang.IllegalStateException: Toolkit not initialized
but the iPOJO
located the implementation class of the LibraryClass
interface.
After some research I found out that the application should be inside the class that extends the javafx.application.Application
so I did some restructuring.
@Component
@Instantiate
public class JavafxApp extends Application {
@Requires
LibraryClass class;
@Override
public void start(Stage primaryStage){
class.someMethod();
}
@Validate
public void start(){
launch(JavafxApp.class);
}
}
Edit
The LibraryClass
interface and implementation:
@Component
@Provides
@Instantiate
public class LibraryClassImplementation implements LibraryClass {
public void someMethod(){
system.out.println("Hello Javafx using iPOJO");
}
}
public interface LibraryClass {
public void someMethod();
}
Now the iPOJO
throws a RuntimeException
and the LibraryClass
becomes null
and the application throws a NullPointerException
.
My questions are:
- Is it possible to use
iPOJO
in this situation? - If it is what is the right way to use
iPOJO
in aJavaFX
application?
Thanks in advance! :D