我正在做一个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();
}
现在iPOJO
throws aRuntimeException
和LibraryClass
becomenull
并且应用程序抛出 a NullPointerException
。
我的问题是:
- 这种情况下可以使用
iPOJO
吗? - 如果是
iPOJO
在JavaFX
应用程序中使用的正确方法是什么?
提前致谢!:D