我有以下抽象类,具有 init()stop() 方法: (stop() 方法中的问题)

public abstract class AbstractJavaFxApplication extends Application { 
 
    private static String[] fxArgs; 
 
    protected ConfigurableApplicationContext applicationContext; 
 
    @Override 
    public void init() throws Exception { 
        applicationContext = SpringApplication.run(getClass(), fxArgs); 
        applicationContext.getAutowireCapableBeanFactory().autowireBean(this); 
    } 
 
    @Override 
    public void stop() throws Exception { 
        System.out.println("STOP"); 
        applicationContext.stop(); 
        super.stop(); 
    } 
 
    protected static void launchApp(Class<? extends AbstractJavaFxApplication> clazz, String[] args){ 
        fxArgs = args; 
        Application.launch(clazz, args); 
    } 
} 

主类,它扩展了AbstractJavaFxApplication:

@SpringBootApplication 
public class WeightliftingviewerApplication extends AbstractJavaFxApplication{ 
 
    @Value("First attempt") 
    private String tittle; 
 
    @Qualifier("mainView") 
    @Autowired 
    private ControllersConfiguration.ViewHolder view; 
 
    public static void main(String[] args) { 
        launchApp(WeightliftingviewerApplication.class, args); 
//      SpringApplication.run(WeightliftingviewerApplication.class, args); 
    } 
 
    @Override 
    public void start(Stage primaryStage) throws Exception { 
        primaryStage.setTitle(tittle); 
        primaryStage.setScene(new Scene(view.getView())); 
        primaryStage.setResizable(true); 
        primaryStage.centerOnScreen(); 
        primaryStage.show(); 
    } 
} 

问题在于,当我关闭应用程序时,我预计会命中 stop() 方法并在控制台中获取 STOP 。但应用程序尚未停止,仍在运行

请您参考如下方法:

在您的停止方法中尝试一下:

@Override 
public void stop() throws Exception { 
    System.out.println("STOP"); 
    Platform.exit(); 
    System.exit(0); 
} 


评论关闭
IT干货网

微信公众号号:IT虾米 (左侧二维码扫一扫)欢迎添加!