每周问题系列 - JavaFX界面没响应,Maven编译自动忽略rt包

时间:2022-06-19 06:22:05

本人博客文章网址:https://www.peretang.com/weekly-problem-session-week-31/


前言

新开一个系列, 用来记录每周遇到的问题

JavaFX界面没响应

当你在JavaFX的一个事件中绑定了一个需要一段时间运行的事件时, 在该事件运行期间, JavaFX界面是没响应的.

查阅Oracle官方文档后得知, JavaFX是一个单线程程序, 其大概的流程是"界面-用户操作-根据顺序存入队列中-从队列中获取事件-执行具体的事件操作-修改界面".

Oracle亦给出了解决方法, JavaFX为我们准备了javafx.concurrent包, 来提供并发的支持, 使用javafx.concurrent中的Task类, 我们可以让逻辑在后台运行, 并可与界面控件进行绑定实现实时更新.

参考

JavaFX Concurrency

Maven编译自动忽略rt包

在本周的工作里, 在某个方法中使用了一个JDK自带的rt包中的类, 在使用Junit测试后没问题, 打算用maven打包并发布, 但是却提示该类不存在, 在网上查阅资料后得知

--"sun之类的包并不包含在Java平台的标准中"

解决方法:

在Maven中的maven-compiler-plugin插件中的configuration中添加

<fork>true</fork>

<compilerArgument>-XDignore.symbol.file</compilerArgument>

从而让javac编译器允许编译rt中的某些特别类

参考

Maven can't compile class which depends on rt.jar

Keep outstanding.

Pere Tang. 2pm on Aug 8, 2017