[已解决]JDK11版本中使用Java FX的一个问题?


方法入口类:

import javafx.application.Application;

public class Main extends Application {

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

    @Override
    public void start(Stage primaryStage) {
        // 主业务
    }
}

模块声明类:

module java9.demo {
   requires javafx.graphics;
   requires javafx.controls;
}

问题整个服务流程,虽然是Main主类发起,但是Application#launch会通过反射再调用主类的satrt方法,在模块化之前当然没问题,但是模块化之后由于javafx的模块没有声明对java9.demo的依赖且没有用到SPI机制,那为什么还是可以运行?

↑原问题

源项目代码实际是不能启动的,原因确实是反射引起的,由于javafx模块对于应用模块无权限,所以解决办法是当前模块设置为开放模块即可。
open module java9.demo {
   requires javafx.graphics;
   requires javafx.controls;
}
阅读 1.3k
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题