? ? ? ? 因為要適配國產統信UOS系統,要求JavaFx程序能簡便雙擊運行,由于網上UOS開發相關文章少,多數文章沒用,因此花了不少時間,踩了不少坑,下面記錄一些遇到的問題,我的程序環境是jdk1.8,為maven模式開發的JavaFx程序。在這之前要先打開開發者模式和允許任意應用運行
1.Jar文件運行
? ? ? ? 打包過程就不說了,網上很多,我是在IDEA上打包出的jar,放到uos系統后,首先下載jdk配置環境,使用命令行下載之后,jdk環境會默認配置好,我下載的是openjdk8,然后遇到第一個坑Jar文件在命令行使用Java -jar xxx.jar,無法運行,該文件在Windows系統可正常運行,但在UOS上報"找不到或無法加載主類"如下錯誤:
? ? ? ? ??
如圖可以看到jdk版本和報錯信息,也可以看到兩個系統jdk版本一致,這個問題整了很久,后面在UOS上試運行Windows系統下打包的測試Jar文件,發現可以正常運行,于是猜測問題可能出在JavaFx組件上,又試運行Swing編寫的界面程序,可以正常運行,確定是JavaFX導致的問題,為什么同個版本jdk會出現這種問題呢,一番搜索答案出現了
因為Linux下,下載的是openJdk,而openJdk是沒有附帶JavaFx,而Windows上用的是OracleJdk是有JavaFx,雖然Oracle后面的Jdk版本也把JavaFx分開了,但是Oracle jdk1.8是有的,這就是導致JavaFx不能跨環境運行的原因,找到原因,于是開始操作,我先想到的是把openjdk缺的Jfx組件補上,發現不行,找到Linux各樣技術文章總結大致步驟應該如下,
1.要找到對應jar包,2.要放到openjdk對應文件夾下 3.運行命令導出模塊
這個方法我沒有成功,也沒看到哪個文章把這件事說清楚,所以我換個思路,不用openjdk1.8,用更高版本,但還是要面對openjavafx和openjdk整合問題,后面準備研究。
第三個就是圖中提到的方法了,安裝oraclejdk1.8,這樣就可以了,下面是安裝步驟
2.UOS安裝Oracle Jdk1.8
? ? ? ? 首先卸載原先的jdk環境,可以打開終端在命令行上執行
sudo apt-get remove openjdk*
執行完畢后,openjdk會卸載,并清除配置環境,可以用Java -version做測試,接下來就是安裝OracleJdk1.8,首先要下載Linux下的OracleJdk1.8,資源在這jdk-8u371-linux-x64.tar.gz jdk-8u371-windows-x64.exe 【jdk-8u371】 全平臺下載_horizon08的博客-CSDN博客
? ? ? ? 如果鏈接失效,可以給該博主留言,我只下載了我需要的版本。下載解壓之后就要自己配置環境了,但是我想盡可能讓程序安裝運行過程簡便,于是省去環境配置步驟,實現雙擊運行。
3.雙擊運行Jar文件
這個過程在剛開始研究時也遇到很多問題,因為待開發產品不需要上商城推廣,所以我走了簡便方法,需要上商城的可以去了解打包審核流程,UOS也可以安裝AppImage格式,關于這些我沒有深入研究,下面只介紹如何雙擊運行Jar文件,一共有兩種方法,選其一即可
a.使用.sh腳本運行jar包
創建start.txt文件(文件命名隨意),編輯如下內容:
#! /bin/bash
/data/home/UOS/ideajdk/jdk1.8/bin/java -jar face.jar
/data/home/UOS/ideajdk/jdk1.8/bin/java是下載解壓的oraclejdk目錄地址,face.jar是需要啟動的jar文件,根據自己實際情況做改動,然后修改文件后綴名為.sh,右鍵->屬性->允許以程序運行,即可雙擊,選擇運行即可
注意:要運行的jar文件沒有指定目錄地址,所以start.sh文件要和jar文件在同一個目錄下,不然要指定jar所在的文件目錄
b.配置.desktop格式文件,運行jar包
????????這個方式相比于a,更為通用,a方式只是針對一個jar包運行,而b方式配置之后則可以運行所有.jar文件格式,具體配置方法如下:
首先找到usr/share/applications文件夾,如圖
在該文件夾下打開終端,具體內容參考
linux java 雙擊運行_在深度deepin系統中使用雙擊運行jar文件的方法-CSDN博客
因為沒有jdk配置環境變量,所以需要在這里做些改動,
Exec字段要寫上jdk的文件路徑,如果環境已經配置,則不需要,保存之后雙擊jar文件
選擇默認打開方式為Java程序,后續就可以雙擊直接運行了
除此之外,UOS也可以運行exe文件,需要下載Wine,后續有時間再補充文章
?