我正在做一个Javafx应用程序Apache Felix以及一些使用iPOJO.
首先是我Application.launch()在另一个类中调用该方法,然后启动另一个包含iPOJO @Requires这样的类:
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();
}
}
这个实现抛出了这个异常,java.lang.IllegalStateException: Toolkit not initialized但是定位到了接口iPOJO的实现类。LibraryClass
经过一些研究,我发现应用程序应该在扩展的类中,javafx.application.Application所以我做了一些重组。
@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);
}
}
编辑
LibraryClass接口和实现:
@Component
@Provides
@Instantiate
public class LibraryClassImplementation implements LibraryClass {
public void someMethod(){
system.out.println("Hello Javafx using iPOJO");
}
}
public interface LibraryClass {
public void someMethod();
}
现在iPOJOthrows aRuntimeException和LibraryClassbecomenull并且应用程序抛出 a NullPointerException。
我的问题是:
- 这种情况下可以使用
iPOJO吗? - 如果是
iPOJO在JavaFX应用程序中使用的正确方法是什么?
提前致谢!:D