如何在Windows上從原始碼構建OpenJFX 8
所以你已經聽到了這個訊息。 Oracle震驚世界,改變了Java和相關技術的支援路線圖,釋出週期等。 但是,您的業務'JavaFX應用程式(及其依賴項)在Oracle JDK 8上執行。您喜歡穩定性,因為如果您不這樣做,您的業務軟體可能會失敗,導致您花錢或更糟 - 讓您破產和/或還是欠債
那麼這對Oracle JDK / JavaFX 8的商業使用者意味著什麼呢? 兩件事情:
我們多年來一直受到的第一次免費的公共支援,就像一個與生俱來的權利一樣,很快就會結束。
在2019年1月之後,如果沒有Oracle的商業許可,將不會為“商業,商業或生產用途”提供Oracle JDK 8的公開更新。
第二,JavaFX支援也即將結束。
JavaFX 8的免費支援將提供到2022年3月,JavaFX將從Java SE 11中刪除,Java SE 11已經在我們面前。
“Winging”對於嚴肅的企業來說,它不是一個選擇,因為使用沒有安全更新,錯誤修復或其他支援的Oracle JDK 8充其量只是一個可怕的風險,更糟糕的是,災難性的; 從Java 11開始,企業可能無法在沒有許可證的情況下在生產中使用Oracle JDK 11。
以防你錯過了它
所以現在怎麼辦?
解決方案: OpenJDK。 到目前為止,OpenJDK顯然是Java和JVM的未來; 有關 更多資訊, 請參見 此處 在某種程度上,這是Sun一直想要的傳真 - 一個免費和開放的Java。 透過上述更改,Oracle為Linux,Mac和Windows提供了二進位制OpenJDK版本。 但是,它不維護或提供OpenJDK 8二進位制檔案。 如果您在Linux機器上執行,這可能不是問題,因為在許多Linux平臺上都維護著OpenJDK發行版。 但是如果你在Windows上呢? 這裡的情況有點不同。
有一些人(例如@chriswhocodes和Sky Land Universal Corporation)提供他們自己的OpenJFX版本。 但是,依靠這些第三方提供OpenJFX構建可能不符合您的需求。 他們欠你什麼,可以在沒有警告的情況下明天關閉。 此外,您將依賴於它們提供的構建的完整性。
然而,好訊息是,由於 OpenJFX (一個OpenJDK專案是Oracle JFX上游),您可以在開放的情況下編譯和構建JavaFX - 在GPL v2下使用Classpath Exception。
此外,由於JavaFX與JVM的分離正在向前發展,因此切換到OpenJFX將使您的業務直接與未來的工作方式保持一致,希望能夠實現更順暢的升級。 但請注意,一家名為Gluon的公司 ,OpenJFX的 事實上的 社群管理員,在您準備進行切換時提供OpenJFX 11版本。 這一切的美麗? 如果你不願意,你不必使用Gluon的版本,儘管它們非常支援並且是JavaFX社群中進化的驅動力。
來自OpenJDK社群的支援
到目前為止,尚未解決2019年1月以後的Java 8支援問題。 這就是神奇的地方。 社群成員,包括但不限於IBM,RedHat,Azul,Eclipse和AdoptOpenJDK,已經提供了支援Java 8支援的計劃,直到2023年(大多數),這是Oracle打算在日期之後的一年。結束對JavaFX的公共支援。
因此,在AdoptOpenJDK之類的分發版上執行OpenJFX將使您的業務能夠在JavaFX 8上保留至少到2022年3月。此外,AdoptOpenJDK為OpenJDK提供二進位制檔案,使您無需構建OpenJDK來自源的二進位制檔案。
出於本文的目的,我們將展示如何在Windows上設定開放式Java / JavaFX解決方案。
先決條件
-
耐心和希望
-
Windows 10 x64(早期版本和其他架構也可以工作)
-
一個程式碼(文字)編輯器,如Notepad ++或Sublime,這是首選。
-
幾GB的空間
路線
-
開啟文字編輯器和終端。
-
下載AdoptOpenJDK 8 x64( )。 您可以選擇您喜歡的JVM。 但請注意,為了本教程的目的,我選擇了HotSpot。
-
提取“OpenJDK8U-jdk_x64_windows_hotspot_8u192b12.zip”的內容或包含OpenJDK的存檔名稱,並複製到您將記住的路徑,例如C:\ java \ adoptOpenJDK \ java8。 將此路徑的純文字以及C:\ java \ adoptOpenJDK8 \ bin複製到所選文字編輯器中的新檔案。
-
下載並安裝Cygwin( )。 繼續使用預設值(從Internet安裝,C:\ cygwin64,所有使用者,下載目錄...,使用系統代理設定,選擇一個映象......)對我來說,我建立了C:\ cygwin64 \ downloads並將其用作從命令提示符下載目錄(mkdir C:\ cygwin64 \ downloads。)將C:\ cygwin64 \ bin複製到您的文字檔案,現在列表中有三個目錄。
-
在安裝程式提示的select packages階段,選擇並安裝以下軟體包。 當您將檢視更改為pending時,您應該找到所有這些選擇。
6.下載並安裝“Direct SDK June 2010”( )。
7.在文字檔案中,輸入兩個新行,然後將“DSDK_DIR”C:\ Program Files(x86)\ Microsoft DirectX SDK(2010年6月)\“複製到您的文字檔案中。
8.使用TortoiseSVN x64( https://www.mercurial-scm.org/wiki/Download#Windows ) 下載並安裝Mercurial 。
9.下載Gradle 4.8( ),解壓縮,然後將〜\ Downloads \ gradle-4.8-all \ gradle-4.8的內容複製到C:\ gradle這個\ 4.8。 (mkdir C:\ gradle \ 4.8)
10.下載Apache Ant( )並將壓縮的壓縮資料夾的內容解壓縮到C:\ apache \ ant-1.8.2 \。 將“C:\ apache \ ant-1.8.2 \ bin”新增到文字檔案列表中。
11.下載Microsoft Visual Studio 2017 Professional安裝程式,並免費試用( )並執行該應用程式。
12.導航到“安裝位置”。 驗證安裝位置是否為“C:\ Program Files(x86)\ Microsoft Visual Studio \ 2017 \ Professional”。
13.導航到“單個元件”。 向下滾動到底部並選中“Windows 8.1 SDK”。 點選安裝並繼續,無需工作負載。
14.重新啟動計算機。
15.設定PATH和環境變數
-
開啟Windows檔案資源管理器。
-
將游標拖動到最左側的窗格,然後右鍵單擊“此PC”
-
在上下文選單下,選擇“屬性”
-
您現在將位於顯示有關PC的基本資訊的目錄中(控制皮膚\所有控制皮膚專案\系統)。 在左側窗格中,您會注意到“高階系統設定”。 選擇此項。
-
導航到“高階”選項卡,然後選擇“環境變數”。
-
你會看到兩個主要的盒子。 第一個名為“<user name here>的使用者變數”,最下面的名稱為“系統變數”。
-
雙擊“Path”系統變數。
-
警告: 編輯任何使用者或環境變數時要非常小心。 繼續需要您自擔風險。 未能正確配置環境變數可能導致PC執行不正常。
-
從文字檔案中新增或確保環境路徑中存在以下目錄,然後單擊“確定”。
C:\ java \ adoptOpenJDK8 \ bin
C:\ gradle \ 4.8 \ bin
C:\ apache \ ant-1.8.2 \ bin
C:\ cygwin64 \ bin
C:\ Program Files \ TortoiseHg \
JDK_HOME - -C:\ java \ adoptOpenJDK8
DXSDK_DIR - - C:\ Program Files(x86)\ Microsoft DirectX SDK(2010年6月)\
JAVA_HOME - - C:\ java \ adoptOpenJDK8 VS100COMNTOOLS - - C:\ Program Files(x86)\ Microsoft Visual Studio 10.0 \ Common7 \ Tools \
WINSDK_DIR - - C:\ Program Files(x86)\ Microsoft Visual Studio 10.0 \ VC \ bin
16.驗證PATH是否設定正確(如果您願意,可以檢查其他人)
驗證Gradle使用的JVM是否為AdoptOpenJDK版本而不是其他版本! 如果使用Oracle JDK而不是OpenJDK,則構建將失敗。
17.在終端中,執行命令mkdir C:\ java \ javafx
18.在終端中,執行命令chdir C:\ java \ javafx
19.在終端中,執行命令
將OpenJDK源克隆到當前目錄
hg clone
.openjdk.java.net
/openjfx/8u-dev/rt
20.克隆成功完成後,在文字編輯器中開啟〜/ rt / build.gradle。
導航到第745行
int ib = v.indexOf(" (build");
。
您將看到該行
。
將其更改為以下內容:
int ib = v.indexof("(build");
。
21.導航到第747行。您將看到該行
String ver = v.substring(ib + 8, v.size() - 1);
。
將其更改為以下內容:
String ver = v.substring(ib + 7, v.size()-1);
。
22.在文字編輯器中開啟〜/ rt / buildSrc / win.gradle。
導航到第142行
?"WINDOWS_VS_VSINSTALLDIR/VC/BIN/amd64
。
您將看到該行
。
將其更改為以下內容
?"WINDOWS_VS_VSINSTALLDIR/VC/BIN
23. [可選]在終端中,執行命令
gradlew tasks --all
。
這將顯示此專案的所有可用Gradle任務。
24.在終端中,只需執行命令即可
gradlew
。
成功的構建過程看起來像這樣。
25.執行一些測試。
請注意,OpenJFX中有幾個專案。
透過執行以下命令在基礎專案上執行測試:
gradlew :base:test
。
如果成功,將在~rt / buildSrc / build / reports / tests / test / index.html中提供構建報告
26.導航到〜/ rt / apps / samples / build.xml並註釋掉有關Ensemble8的第14行和第20行。
27.在〜/ rt / apps / samples / build.xml中註釋掉第3322-3325行並儲存檔案。 它應該如下所示:
/ *
ant.project.executeTarget( “scenebuilderSampleAppsJar”)
if(!t.name.startsWith(“arm”)){
ant.project.executeTarget( “scenebuilderAppJar”)
}
* /
28.在〜/ rt / apps / samples / build.xml和註釋掉第3337-3340行,它應如下所示:
/ *
ant.project.executeTarget( “scenebuilderSampleAppsClean”)
if(!t.name.startsWith(“arm”)){
ant.project.executeTarget( “scenebuilderAppClean”)
}
* /
29.執行命令
gradlew zips
或
gradlew zips -Dorg.gradle.java.home-C:\java\adoptOpenJDK8
建立疊加層。
如果成功,它應該如下所示:
30.解壓縮〜\ rt \ build \ bundles \ javafx-sdk-overlay.zip。
導航到JAVA_HOME的位置。
將〜\ rt \ build \ bundles \ javafx-sdk-overlay \ bin的內容複製到$ JAVA_HOME \ bin。
將〜\ rt \ build \ bundles \ javafx-sdk-overlay \ lib的內容複製到$ JAVA_HOME \ lib。
將〜\ rt \ build \ bundles \ javafx-sdk-overlay \ jre \ bin的內容複製到$ JAVA_HOME \ jre \ bin。
將〜\ rt \ build \ bundles \ javafx-sdk-overlay \ jre \ lib的內容複製到$ JAVA_HOME \ jre \ lib。
31.刪除解壓縮的資料夾〜\ rt \ build \ bundles \ javafx-sdk-overlay。 針對adoptOpenJDK8 + openJFX8執行一些示例程式碼。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31557424/viewspace-2284844/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- AvaloniaChat—從原始碼構建指南原始碼
- 從原始碼構建docker-ce原始碼Docker
- 從原始碼構建TensorFlow流程記錄原始碼
- 如何在AWS上構建Apache DolphinSchedulerApache
- 在windows上構建OpenCascadeWindows
- JVM 原始碼分析(二):搭建 JDK 8 原始碼除錯環境(Windows 上使用 CLion)JVM原始碼JDK除錯Windows
- Vue.js原始碼解析-從scripts指令碼看vue構建Vue.js原始碼指令碼
- 在windows上構建LLVM 7.0.1WindowsLVM
- 從 Chrome 原始碼看瀏覽器如何構建 DOM 樹Chrome原始碼瀏覽器
- 深入剖析Vue原始碼 - 響應式系統構建(上)Vue原始碼
- 如何在CoreOS上構建你的WordPress應用
- 【Tomcat 原始碼系列】原始碼構建 TomcatTomcat原始碼
- Vue.js 原始碼構建Vue.js原始碼
- windows下修改、編譯、構建spring-framework4.1.8.RELEASE原始碼Windows編譯SpringFramework原始碼
- 如何在阿里雲上構建高可用應用阿里
- 如何在Linux上構建 RAID 10陣列LinuxAI陣列
- Flutter原始碼剖析(一):原始碼獲取與構建Flutter原始碼
- 使用 Docker 構建 Nebula Graph 原始碼Docker原始碼
- gradle構建spring原始碼GradleSpring原始碼
- Vue原始碼: 建構函式入口Vue原始碼函式
- tomcat8.5原始碼構建Tomcat原始碼
- 從JDK原始碼看String(上)JDK原始碼
- 從原始碼構建一個極簡的Linux作業系統原始碼Linux作業系統
- 保姆級教程!如何在 Anolis 8 上構建基於 Nydus 和 Dragonfly 的映象加速解決方案?Go
- vue原始碼解讀-建構函式Vue原始碼函式
- Mybatis原始碼簡單解讀----構建MyBatis原始碼
- 如何在Windows上安裝DockerWindowsDocker
- [golang]如何在windows上使用cgoGolangWindows
- 如何在Windows上編譯Docker?Windows編譯Docker
- fir.im Weekly - 如何在 iOS 上構建 TensorFlow 應用iOS
- 重構程式碼(應如寫詩)
- Intuit如何在一個Lakehouse上構建AI、分析和流資料UIAI
- SpringSecurity 原始碼分析之SecurityFilterchain的構建SpringGse原始碼FilterAI
- Vue原始碼探究-構建版本的區別Vue原始碼
- 配置軟體原始碼包構建環境原始碼
- 如何在Windows上遠端控制MacWindowsMac
- 如何在Windows上使用Git建立一個可執行指令碼?WindowsGit指令碼
- 如何在linux中從原始碼編譯安裝nodejs?Linux原始碼編譯NodeJS