每周問題系列 - JavaFX界面沒響應,Maven編譯自動忽略rt包 ...
本人博客文章網址:https://www.peretang.com/weekly-problem-session-week-31/
前言
新開一個系列, 用來記錄每周遇到的問題
JavaFX界面沒響應
當你在JavaFX的一個事件中綁定了一個需要一段時間運行的事件時, 在該事件運行期間, JavaFX界面是沒響應的.
查閱Oracle官方文檔後得知, JavaFX是一個單線程程式, 其大概的流程是"界面-用戶操作-根據順序存入隊列中-從隊列中獲取事件-執行具體的事件操作-修改界面".
Oracle亦給出瞭解決方法, JavaFX為我們準備了javafx.concurrent包, 來提供併發的支持, 使用javafx.concurrent中的Task類, 我們可以讓邏輯在後臺運行, 並可與界面控制項進行綁定實現實時更新.
參考
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