日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

使用 GraalVM 将纯 JavaFX 项目打包成 EXE

發布時間:2024/4/13 java 74 豆豆
生活随笔 收集整理的這篇文章主要介紹了 使用 GraalVM 将纯 JavaFX 项目打包成 EXE 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

使用 GraalVM 將純 JavaFX 項目打包成 EXE

  • GraalVM 的環境搭建
  • 打包不含 FXML 的純 JavaFX 項目
  • 打包含 FXML 的純 JavaFX 項目
  • 測評
    • 在 IntelliJ IDEA 中直接運行
    • 生成 JAR 包后運行
    • GraalVM 打包后運行
  • GraalVM 與 Java 中其它打包成 EXE 的方法對比
  • 總結

??GraalVM 可以使得 Java 應用可以脫離 JVM 來運行。換句話說,它可以使 Java 應用在沒有 Java 環境中運行。不過目前,這項技術還有很多的問題。由于 GraalVM 使用的是 AOT 技術,所以它不能直接用于打包含 Java 反射、動態代理的 Java 項目。一般來說,如果想對含 Java 反射、動態代理的 Java 項目使用 GraalVM 進行打包,必須提前向 GraalVM 提供一個列出了涉及 Java 反射、動態代理所有的類的 JSON 列表,否則,要么打包時會失敗,要么打包后的應用在運行時會失敗。

??另外,GraalVM 打包對內存的較高。在打包過程對內存的占用超 6 G 以上、CPU 占用 99% 是很常見的事情。此外,GraalVM 打包所用的時間也較長,可長達幾分鐘。正因為如此,在打包過程中,有些電腦管家類軟件還會報毒。

??JavaFX 支持使用 FXML 這種文本語言來創建組件,然而對于這種文本語言,Java 往往都中借助于反射技術來實現與其兼容。FXML 也不例外。之前,筆者已經編寫過使用 GraalVM 將基本的 Java 項目打包成 EXE 的教程,可見筆者的另一篇博客:

使用 GraalVM 將基本的 Java 項目打包成 EXE:
https://blog.csdn.net/wangpaiblog/article/details/122422987

??這次,筆者來示范一下如何使用 GraalVM 將純 JavaFX 項目打包成 EXE。純 JavaFX 項目指的是此 Java 項目沒有使用其它涉及反射、動態代理的 Java 框架或技術。

運行環境:

  • GraalVM Enterprise 21.3.0

  • Java 語言級別:17

  • JavaFX 17.0.1

  • Maven 3.8.3

  • IntelliJ IDEA 2021.2.2 (Ultimate Edition)

  • Windows 10 教育版 64位

GraalVM 的環境搭建

  • GraalVM 有兩種版本,Community 和 Enterprise。其中,前者對應于 OpenJDK,后者對應 Oracle JDK。需要根據自己的需要進行選擇,本文以 GraalVM Enterprise 21.3.0 為例。

    GraalVM 版本選擇網址:https://www.graalvm.org/downloads/

  • 下載 GraalVM Enterprise 21.3.0 需要進入 Oracle 官網,網址:https://www.oracle.com/downloads/graalvm-downloads.html?selected_tab=1

  • 先下載 Oracle GraalVM Enterprise Edition Core。下載完成之后,應該會得到一個 zip 壓縮包。

  • 再在剛才的頁面下載 Oracle GraalVM Enterprise Edition Native Image。這次得到的應該是一個 JAR 包。

  • 將前面的 zip 壓縮包置入自己喜歡的文件夾下解壓,解壓得到的就是 GraalVM 程序文件。與安裝 JDK 時類似,將含 bin 的目錄作為 GraalVM 的安裝目錄。設環境變量如下:

    • 變量名:ORACLE_GRAALVM_HOME

      變量值:C:\Program Files\Java\graalvm-ee-java17-21.3.0

    • 變量名:GRAALVM_HOME

      變量值:%ORACLE_GRAALVM_HOME%

    • 變量名:Path

      變量值:%GRAALVM_HOME%\bin

  • 如果上面的環境變量設置成功,在 CMD 的任意路徑中輸入以下命令應該能看到上面設置的路徑。

    where java
    where gu
    C:\>where java C:\Program Files\Java\graalvm-ee-java17-21.3.0\bin\java.exeC:\>where gu C:\Program Files\Java\graalvm-ee-java17-21.3.0\bin\gu.cmd
  • 安裝 Native Image 包。Native Image 包就是前面下載的 JAR 包。輸入以下命令對 Native Image 進行本地安裝。

    gu -L install Native Image 的 JAR 包路徑

    其中,Native Image 的 JAR 包路徑 要替換成實際的路徑。

  • GraalVM 的運行需要 Visual Studio 中的 MSVS 的支持,因此需要下載 Visual Studio。編寫本博客時,筆者下載的是 Microsoft Visual Studio Enterprise 2022 (64 位)。

    Visual Studio 下載網址:https://visualstudio.microsoft.com/zh-hans/vs/

  • 現在,Visual Studio 在官網上只會提供在線安裝包。下載完在線安裝包后,選擇安裝含 MSVS 的選項。

  • 至此,GraalVM 的運行環境已經搭成。下面將開始使用 GraalVM 進行打包。

  • 打包不含 FXML 的純 JavaFX 項目

  • 為此,筆者編寫了一個簡易的不含 FXML 的純 JavaFX 項目。


    【踩坑提醒】

    • 對于 Java 8 以上的 JavaFX 項目,必須使用 Java 模塊系統才能對其進行 GraalVM 打包。出于本文的重點,這里不詳細介紹什么 Java 模塊系統以及它的語法。通常,構建 Java 模塊系統只需要在頂級目錄中添加一個模塊聲明文件 module-info.java。

    • 項目的整個文件路徑中都不能含有中文,否則后面的 GraalVM 打包將失敗。


  • 為了方便讀者自行快速實踐,項目源碼已上傳至 GitCode,位于 Git 分支 withoutfxml 中,可免費下載,鏈接:https://gitcode.net/wangpaiblog/20220209-purejavafx

  • 這個項目所做的事情很簡單,模擬簡單的組件間的消息傳遞。如圖所示:

  • 核心代碼如下:

    package org.wangpai.demo.purejavafx;import java.io.IOException; import javafx.application.Application; import javafx.geometry.Insets; import javafx.scene.Scene; import javafx.scene.control.Button; import javafx.scene.control.TextArea; import javafx.scene.layout.VBox; import javafx.stage.Stage;import static javafx.geometry.Pos.BOTTOM_RIGHT; import static javafx.geometry.Pos.CENTER;public class App extends Application {public static final long START_TIME = System.currentTimeMillis();@Overridepublic void start(Stage stage) throws IOException {var output = new TextArea();output.setPrefSize(200, 200);output.setEditable(false);output.setWrapText(true);var input = new TextArea();input.setPrefSize(200, 200);input.setWrapText(true);var send = new Button("發送(S)");send.setOnAction(event -> {var msg = input.getText();System.out.println(msg);output.setText(msg);input.requestFocus();input.clear();});var sendVbox = new VBox(send);sendVbox.setPrefSize(200, 0);sendVbox.setAlignment(BOTTOM_RIGHT);var vbox = new VBox(20, output, input, sendVbox);vbox.getStylesheets().add(App.class.getResource("/org/wangpai/demo/purejavafx/MainFace.css").toExternalForm());vbox.setAlignment(CENTER);vbox.setPrefSize(500, 500);vbox.setPadding(new Insets(20));Scene scene = new Scene(vbox, 500, 500);stage.setTitle("javafx without fxml");stage.setScene(scene);stage.show();output.setText("應用啟動用時:" + (System.currentTimeMillis() - START_TIME) / 1000.0 + "s");input.requestFocus();}public static void main(String[] args) {launch();} }
  • 因為本項目是使用 Maven 進行構建的,所以這里也使用 Maven 插件來進行 GraalVM 打包,這需要在 Maven 的 POM 文件中進行配置。關于 Maven 的安裝與插件,筆者在此之前也編寫一些博客,故此處不再對 Maven 做過多介紹。

  • 這個插件是 Gluon 提供的,Gluon 現在實質上已經成為了 JavaFX 技術的主要提供商。

    Gluon 官網:https://gluonhq.com/

    JavaFX 的 GraalVM 打包 Maven 插件官方文檔網址:https://docs.gluonhq.com/#_gluonfx_plugin_for_maven

  • POM 的插件配置代碼模板如下:

    <project...><build><plugins><plugin><groupId>com.gluonhq</groupId><artifactId>gluonfx-maven-plugin</artifactId><version>1.0.10</version><configuration><target>host</target><mainClass>入口類的包名.類名</mainClass></configuration></plugin></plugins></build> </project>

    注意:對于純 JavaFX 的 Java 模塊化項目,其入口類應該是一個繼承了 Application 的類

  • 如果需要在 JavaFX 中使用一些特殊的資源文件,這需要在此列出所有的這些文件。此插件打包時已經內置了如下類型的文件。

    • png, jpg, jpeg, gif, bmp, ttf, raw

    • xml, fxml, css, gls, json, dat,

    • license, frag, vert, obj

    已經內置了類型的文件不需要自行列出(即上面列出的類型的文件不屬于上面所言的 特殊的資源文件)。更多的信息,可見:

    https://docs.gluonhq.com/#_resourceslist

    https://github.com/gluonhq/substrate/blob/master/src/main/java/com/gluonhq/substrate/target/AbstractTargetConfiguration.java#L70-L73

  • 列出的方法是,在 <configuration/...> 中使用 <bundlesList/...>、<list/...>,然后在 <list/...> 中依次列出。如:

    <project...><build><plugins><plugin><groupId>com.gluonhq</groupId><artifactId>gluonfx-maven-plugin</artifactId><version>1.0.10</version><configuration><target>host</target><mainClass>入口類的包名.類名</mainClass><bundlesList><list>文件路徑.文件名</list></bundlesList><reflectionList></configuration></plugin></plugins></build> </project>

    不過要注意,這個列出文件的時候,要像 Java 類一樣,使用點號來代替路徑分隔符,且不需要加上文件后綴。如:

    <reflectionList><list>org.wangpai.demo.purejavafx.MainFace</list> </reflectionList>
  • 項目目錄下的命令行中輸入如下命令使用 MSVS 的環境。這個命令是用于設置臨時設置與 MSVS 相關的環境變量,因此每次總是要輸。

  • call "vcvars64.bat 的路徑"
  • vcvars64.bat 提供了 MSVS 的運行環境。雖然也可以通過設置 MSVS 的環境變量來代替,不過這樣要設置的環境變量會有很多。對于筆者的 Microsoft Visual Studio Enterprise 2022 (64 位),以上的命令為:

    call "C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Auxiliary\Build\vcvars64.bat"

    【踩坑提醒】

    ??需要進入 CMD 終端才能運行此命令。 IntelliJ IDEA 的終端默認使用 PowerShell 來運行命令,如果使用 IntelliJ IDEA 終端,需要將 IntelliJ IDEA 的終端設置成 CMD 模式(Command Prompt):


  • 項目目錄下的命令行中輸入如下命令進行 GraalVM 打包:(再次提醒:項目的整個文件路徑中都不能含有中文,否則 GraalVM 打包將失敗。)

    mvn clean gluonfx:build
  • 打包完成之后,應該可以看到在項目路徑 \target\gluonfx\x86_64-windows\ 下的 EXE 文件。對于運行來說,就只有生成的 EXE 文件是核心文件,其它文件只是打包過程中生成的中間產物,都可以刪除。

  • 打包完成之后,可以直接在操作系統或命令行中運行此 EXE 文件,也可以使用如下命令:

    mvn gluonfx:nativerun

    如果選擇直接在操作系統或命令行中運行此 EXE 文件,則標準輸出流將不會定向到運行來源,這意味著將無法看到 System.out.println(...) 這之類代碼的輸出。

  • 打包含 FXML 的純 JavaFX 項目

  • 為此,筆者對上面的 JavaFX 項目作對應改編。改編之后的功能與改編之前完全一樣,這是為了方便之后的測評。


    【踩坑提醒】

    • 對于 Java 8 以上的 JavaFX 項目,必須使用 Java 模塊系統才能對其進行 GraalVM 打包。出于本文的重點,這里不詳細介紹什么 Java 模塊系統以及它的語法。通常,構建 Java 模塊系統只需要在頂級目錄中添加一個模塊聲明文件 module-info.java。

    • 項目的整個文件路徑中都不能含有中文,否則后面的 GraalVM 打包將失敗。


  • 為了方便讀者自行快速實踐,項目源碼已上傳至 GitCode,位于 Git 分支 withfxml 中,可免費下載,鏈接:https://gitcode.net/wangpaiblog/20220209-purejavafx

  • 這個項目所做的事情很簡單,模擬簡單的組件間的消息傳遞。這和前面是一樣的,故此處不再贅述。

  • 核心代碼如下:

    package org.wangpai.demo.purejavafx;import java.io.IOException; import javafx.application.Application; import javafx.fxml.FXMLLoader; import javafx.scene.Scene; import javafx.stage.Stage;public class App extends Application {public static final long START_TIME = System.currentTimeMillis();@Overridepublic void start(Stage stage) throws IOException {FXMLLoader fxmlLoader = new FXMLLoader(App.class.getResource("MainFace.fxml"));Scene scene = new Scene(fxmlLoader.load(), 500, 500);stage.setTitle("javafx with fxml");stage.setScene(scene);stage.show();MainFace.afterUiShow("應用啟動用時:" + (System.currentTimeMillis() - START_TIME) / 1000.0 + "s");}public static void main(String[] args) {launch();} } <?xml version="1.0" encoding="UTF-8"?><?import javafx.geometry.Insets?> <?import javafx.scene.control.Button?> <?import javafx.scene.control.TextArea?> <?import javafx.scene.layout.VBox?> <VBox alignment="CENTER" spacing="20.0" xmlns:fx="http://javafx.com/fxml"prefHeight="500" prefWidth="500"fx:controller="org.wangpai.demo.purejavafx.MainFace"stylesheets="@MainFace.css"><padding><Insets bottom="20.0" left="20.0" right="20.0" top="20.0"/></padding><TextArea prefHeight="200" prefWidth="200" editable="false" wrapText="true"fx:id="output"/><TextArea prefHeight="200" prefWidth="200" wrapText="true"fx:id="input"/><VBox alignment="BOTTOM_RIGHT" prefHeight="0" prefWidth="200"><Button text="發送(S)" onAction="#onActionSend"/></VBox> </VBox> package org.wangpai.demo.purejavafx;import java.net.URL; import java.util.ResourceBundle; import javafx.event.ActionEvent; import javafx.fxml.FXML; import javafx.fxml.Initializable; import javafx.scene.control.TextArea;public class MainFace implements Initializable {private static MainFace mainFace;@FXMLprivate TextArea output;@FXMLprivate TextArea input;@FXMLpublic void onActionSend(ActionEvent event) {var msg = this.input.getText();System.out.println(msg);this.output.setText(msg);this.input.requestFocus();this.input.clear();}@Overridepublic void initialize(URL url, ResourceBundle resourceBundle) {mainFace = this;}public static void afterUiShow(String msg) {mainFace.input.requestFocus();mainFace.output.setText(msg);} }
  • 因為本項目是使用 Maven 進行構建的,所以這里也使用 Maven 插件來進行 GraalVM 打包,這需要在 Maven 的 POM 文件中進行配置。關于 Maven 的安裝與插件,筆者在此之前也編寫一些博客,故此處不再對 Maven 做過多介紹。

  • 這個插件是 Gluon 提供的,Gluon 現在實質上已經成為了 JavaFX 技術的主要提供商。

    Gluon 官網:https://gluonhq.com/

    JavaFX 的 GraalVM 打包 Maven 插件官方文檔網址:https://docs.gluonhq.com/#_gluonfx_plugin_for_maven

  • POM 的插件配置代碼模板如下:

    <project...><build><plugins><plugin><groupId>com.gluonhq</groupId><artifactId>gluonfx-maven-plugin</artifactId><version>1.0.10</version><configuration><target>host</target><mainClass>入口類的包名.類名</mainClass><reflectionList><list>JavaFX 控制器類的包名.類名</list></reflectionList></configuration></plugin></plugins></build> </project>

    注意:

    • 對于純 JavaFX 的 Java 模塊化項目,其入口類應該是一個繼承了 Application 的類。

    • 前面提到過,FXML 會導致 JavaFX 使用反射,為了讓 GraalVM 打包成功,這需要全部列出所有的 JavaFX 控制器類。

  • 如果需要在 JavaFX 中使用一些特殊的資源文件,這需要在此列出所有的這些文件。此插件打包時已經內置了如下類型的文件。

    • png, jpg, jpeg, gif, bmp, ttf, raw

    • xml, fxml, css, gls, json, dat,

    • license, frag, vert, obj

    已經內置了類型的文件不需要自行列出(即上面列出的類型的文件不屬于上面所言的 特殊的資源文件)。更多的信息,可見:

    https://docs.gluonhq.com/#_resourceslist

    https://github.com/gluonhq/substrate/blob/master/src/main/java/com/gluonhq/substrate/target/AbstractTargetConfiguration.java#L70-L73

  • 列出的方法是,在 <configuration/...> 中使用 <bundlesList/...>、<list/...>,然后在 <list/...> 中依次列出。如:

    <project...><build><plugins><plugin><groupId>com.gluonhq</groupId><artifactId>gluonfx-maven-plugin</artifactId><version>1.0.10</version><configuration><target>host</target><mainClass>入口類的包名.類名</mainClass><bundlesList><list>文件路徑.文件名</list></bundlesList><reflectionList></configuration></plugin></plugins></build> </project>

    不過要注意,這個列出文件的時候,要像 Java 類一樣,使用點號來代替路徑分隔符,且不需要加上文件后綴。如:

    <reflectionList><list>org.wangpai.demo.purejavafx.MainFace</list> </reflectionList>
  • 項目目錄下的命令行中輸入如下命令使用 MSVS 的環境。這個命令是用于設置臨時設置與 MSVS 相關的環境變量,因此每次總是要輸。

  • call "vcvars64.bat 的路徑"
  • vcvars64.bat 提供了 MSVS 的運行環境。雖然也可以通過設置 MSVS 的環境變量來代替,不過這樣要設置的環境變量會有很多。對于筆者的 Microsoft Visual Studio Enterprise 2022 (64 位),以上的命令為:

    call "C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Auxiliary\Build\vcvars64.bat"

    【踩坑提醒】

    ??需要進入 CMD 終端才能運行此命令。 IntelliJ IDEA 的終端默認使用 PowerShell 來運行命令,如果使用 IntelliJ IDEA 終端,需要將 IntelliJ IDEA 的終端設置成 CMD 模式(Command Prompt):


  • 項目目錄下的命令行中輸入如下命令進行 GraalVM 打包:(再次提醒:項目的整個文件路徑中都不能含有中文,否則 GraalVM 打包將失敗。)

    mvn clean gluonfx:build
  • 打包完成之后,應該可以看到在項目路徑 \target\gluonfx\x86_64-windows\ 下的 EXE 文件。對于運行來說,就只有生成的 EXE 文件是核心文件,其它文件只是打包過程中生成的中間產物,都可以刪除。

  • 打包完成之后,可以直接在操作系統或命令行中運行此 EXE 文件,也可以使用如下命令:

    mvn gluonfx:nativerun

    如果選擇直接在操作系統或命令行中運行此 EXE 文件,則標準輸出流將不會定向到運行來源,這意味著將無法看到 System.out.println(...) 這之類代碼的輸出。

  • 測評

    ??前面已經介紹了 GraalVM 打包 JavaFX 項目的方法,不過 GraalVM 是否真的可以提高性能呢?如果可以,提高了多少呢?另外,JavaFX 對 FXML 使用了反射,這會不會大幅度影響性能呢?這種事情還是需要親身實踐一下才行。筆者在前面已經留了一手,在前面已經設置了同條件下無 FXML 與有 FXML 的對照組,用應用標題作區分,并在其中預留了應用啟動時間統計?,F在來看一下在 JavaFX 中使用和不使用 FXML 的啟動時間對比,以及使用 GraalVM 打包前后的啟動時間對比。因不同電腦的性能等差異,此結果僅供參考。

    在 IntelliJ IDEA 中直接運行

    ??經過多次測試,本示例項目在 IntelliJ IDEA 中直接運行的啟動時間結果為:

    • 無 FXML 版本:

      • 啟動時間:約 0.7306 s

      • 內存占用:120-130 MB 左右

    • 有 FXML 版本:

      • 啟動時間:約 0.7666 s

      • 內存占用:120-130 MB 左右

    ??可以看出,在 IntelliJ IDEA 環境中,相對于有 FXML 版本,無 FXML 版本的啟動時間略小,減少了大約 5% 的啟動時間,這個減少的時間不是太明顯。另外,內存占用方面,無 FXML 版本也沒有明顯的優勢。

    生成 JAR 包后運行

    ??為了模擬真實環境,這里還將每個項目打成 JAR 包作對比測試。打 JAR 包的插件使用的是 maven-shade-plugin,這個插件的具體配置,已在上面的源代碼中給出。關于這個插件的介紹與使用,可見筆者的另一篇博客:

    Maven 配置文件 POM 的常用插件配置代碼:
    https://blog.csdn.net/wangpaiblog/article/details/120735742

    • Oracle JDK 17 體積:288 MB

    • GraalVM Enterprise 21.3.0 體積:861 MB

    • 無 FXML 版本:

      • 打包后應用體積:8.84 MB

      • 啟動時間:約 0.8662 s

      • 內存占用:90-110 MB 左右

    • 有 FXML 版本:

      • 打包后應用體積:8.84 MB

      • 啟動時間:約 0.9418 s

      • 內存占用:90-110 MB 左右

    ??可以看出,在生成 JAR 包后運行,相對于有 FXML 版本,無 FXML 版本的啟動時間較小,減少了大約 8% 的啟動時間。但內存占用方面,無 FXML 版本沒有明顯的優勢。同時對比 IntelliJ IDEA 環境下的啟動時間,可以發現,IntelliJ IDEA 對 Java 項目的啟動進行了一些優化,同比減少了約 20% 的啟動時間,但代價是占用更多的內存,大約多占用了 15% 的內存。

    GraalVM 打包后運行

    • 無 FXML 版本:

      • 打包耗時:約 2.1 min

      • 打包過程中 CPU 最高平均占用:約 99.7%

      • 打包過程中內存最高平均占用:約 7.3 G

      • 打包后應用體積:69.9 MB

      • 啟動時間:約 0.3076 s

      • 內存占用: 75-85 MB 左右

    • 有 FXML 版本:

      • 打包耗時:約 2.03min

      • 打包過程中 CPU 最高平均占用:約 99.4%

      • 打包過程中內存最高平均占用:約 7.4 G

      • 打包后應用體積:69.7 MB

      • 啟動時間:約 0.3078 s

      • 內存占用:75-85 MB 左右

    ??可以看出,GraalVM 打包過程中的消耗是比較大的,但有 FXML 版本與無 FXML 版本對 GraalVM 打包的影響幾乎為 0。無論是打包過程中,以及生成的 EXE 的運行,有 FXML 版本與無 FXML 版本之間都沒有明顯的數據上的差異。這說明,GraalVM 消除了 Java 反射的負面效果。這正是 AOT 技術的體現之一。

    ??對于啟動時間,使用 GraalVM 打包后減少了 60% 至 70%,這個減少的時間很可觀。對于內存占用,減少了 20% 左右的空間,但是占用的內存依然較大。對于應用體積,相對于原整個 JDK 來說,小了 75%,不過依然較大??偠灾?#xff0c;相對原始的 JAR 包運行,使用 GraalVM 打包后都有一定程度甚至很大幅度上的提高,但相對于 C 家族的 GUI 應用來說,即便是使用 GraalVM 打包,其應用體積、內存占用都沒有太大的競爭力。

    GraalVM 與 Java 中其它打包成 EXE 的方法對比

    ??但是相對于 Java 中其它打包成 EXE 的方法,如果 GraalVM 打包成功,GraalVM 可以說是最優的方式。 Java 中其它打包成 EXE 的方式無非就如下幾種,或者是它們的變體。

    • 方式 1:先生成 JAR,然后將運行 JAR 包的命令寫在一個腳本中,以后直接運行腳本即可。

      但此方法本質上是先運行 Java 虛擬機,然后再用 Java 虛擬機加載運行 Java 代碼。Java 虛擬機會占用較高的內存,且在這種方式下,Java 項目無法擁有自己的父進程名,對外只顯示為 Java 虛擬機在運行。

    • 方式 2:底層原理同方式 1,但將上面的腳本封裝成了一個 EXE。

      這樣做能讓普通用戶不能直接操作底層的腳本命令,提高了一定的安全系數和用戶的友好度。除此之外,它跟方式 1 沒有太大的區別。但根據使用的封裝軟件不同,此 Java 項目可能擁有自己的進程名與圖標。

    • 方式 3:底層原理同方式 2,但使用了一種 EXE 壓縮軟件將上面的 JAR 包與腳本封裝成了一個 EXE。

    • 方式 4:底層原理同方式 3,但這種方式將 JRE 的相對路徑信息也儲存到了 EXE 中,這樣可以直接在此 EXE 附近放一個 JRE 文件,以后就可以在新電腦上無需先安裝 Java 即可馬上運行。

      但這種方式需要向用戶提供 JRE,JRE 的體積一般都非常龐大。另外,這種方式本質上與前面幾種方式一樣,也是先運行 Java 虛擬機,然后再用 Java 虛擬機加載運行 Java 代碼。而 Java 虛擬機會占用較高的內存。

    • 方式 5:前期步驟同方式 4,但額外借助了 Java 的一些內置工具命令精簡了 JRE 體積,使得打包之后應用體積大大減少。

      但這種方式需要每次用人力去排除和篩選 JRE,然后編寫命令執行,無一般的規律可尋,且誤操作之后可能導致打包后運行失敗,這會增加人力時間成本。另外,這種方式只是減少了打包之后應用體積,而沒有減少運行內存。

    • 方式 6:這種方式不同前面的這幾種方式。它直接使用 Java 內置的打包命令即可生成 EXE,而無需借助第三方制 EXE 的軟件。制好后可在新電腦上無需先安裝 Java 即可馬上運行。

      但這種方式需要每次用人力進行文件布局和多次編寫命令執行。另外,這種方式打包后的應用,其運行時本質上還是依賴于 Java 虛擬機。

    • 方式 7:底層原理同方式 6,但它被嵌入到 Java 的一種構建工具(如 Maven)的插件中,一定程序可以減少手動配置并適合離不開構建工具的項目。除此之外,它跟方式 6 沒有太大的區別。

    • GraalVM 方式:這種方式不同前面的這幾種方式。它生成的 EXE 的運行無需借助 Java 虛擬機,更無需先安裝 Java,且無論是應用體積還是運行內存在所有的打包方式是都是最少的

      但它不能直接支持含 Java 反射、動態代理(如 CGLIB)的 Java 項目,需要每次用人力統計所有使用過 Java 反射、動態代理的類,無一般的規律可尋。另外,在所有的打包方式中,GraalVM 打包的耗時最長,CPU、內存消耗都是最大的。

    總結

    ??本文介紹了使用 GraalVM 成功將純 JavaFX 項目打包的方法,但 GraalVM 還有很長的一段路要走。對于很多 API,GraalVM 的支持都有限。如果在 Java 中使用了這些 API,GraalVM 的打包都會失敗,這無疑是給 Java 開發造成了很多限制。另外,GraalVM 對主流 Java 框架的支持很有限。在項目中使用的 Java 框架越多,GraalVM 的打包流程越復雜,需要注意的東西越多,打包成功率越低。

    總結

    以上是生活随笔為你收集整理的使用 GraalVM 将纯 JavaFX 项目打包成 EXE的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

    久久在线电影 | 国产一级免费观看视频 | 毛片黄色一级 | 97超碰在线资源 | 成在人线av | 播五月综合 | 日韩一区二区免费播放 | 国产日韩精品一区二区三区在线 | 日韩欧美一区二区三区在线观看 | 激情欧美xxxx | 久久色在线观看 | 五月婷婷一区二区三区 | 日韩中文免费视频 | 在线免费国产视频 | 高清在线一区二区 | 国产黄色精品在线 | 中文字幕观看在线 | 久久五月天色综合 | 91av蜜桃 | 91亚洲精品乱码久久久久久蜜桃 | 免费国产在线精品 | 亚洲视频大全 | 免费看一级黄色 | 丁香六月伊人 | 免费精品人在线二线三线 | 国产免费成人av | 国产一级大片在线观看 | 日韩视频在线不卡 | 丰满少妇麻豆av | 五月婷婷亚洲 | 免费av视屏 | 极品国产91在线网站 | 久草精品在线播放 | 日韩不卡高清视频 | 亚洲一区二区高潮无套美女 | 操操操日日日干干干 | 一区精品久久 | 日本公乱妇视频 | 国产精品麻豆果冻传媒在线播放 | 激情六月婷婷久久 | 日产乱码一二三区别在线 | 天堂av在线网址 | 国产99久久久欧美黑人 | 奇米网网址 | 亚洲一区二区精品在线 | 国产精品剧情 | 在线观看午夜av | 亚洲精品18p | 91免费观看国产 | 国产xx在线 | 欧美一级在线 | 黄www在线观看 | 精品在线视频观看 | 国产精品一区二区美女视频免费看 | 免费看黄色小说的网站 | 在线观看av的网站 | 麻豆成人小视频 | 97久久精品午夜一区二区 | 精品久久久免费 | 91精品一区国产高清在线gif | 91人人干 | 99精品欧美一区二区三区黑人哦 | 久久精品国产一区二区三 | 中文字幕 国产视频 | 99精品免费在线观看 | 欧美精品一区二区免费 | 国产精品av在线免费观看 | 国产精品综合久久久久久 | 手机成人在线电影 | 国产亚洲aⅴaaaaaa毛片 | 97成人精品区在线播放 | 美女网站在线观看 | 久久国产精品99久久久久 | 欧洲一区精品 | 日本在线观看中文字幕无线观看 | 黄色一区二区在线观看 | 91久久精品一区二区二区 | 国产精品毛片一区视频播 | 91av短视频| 亚洲91中文字幕无线码三区 | 涩涩色亚洲一区 | 国产精品成人在线观看 | 久久综合久色欧美综合狠狠 | 四虎小视频 | 天天爱天天操天天爽 | av福利超碰网站 | 亚洲综合视频在线 | 天堂av在线7| 日韩视频一二三区 | 黄色一二级片 | 香蕉视频在线看 | 国产在线黄 | 国产96在线| 国产女做a爱免费视频 | 91精品久久久久久久91蜜桃 | 91在线视频免费播放 | 久久99九九99精品 | 中文字幕欧美激情 | 一区二区电影网 | 日本高清dvd | 91中文字幕在线 | 一本一道波多野毛片中文在线 | 在线免费观看黄 | 国产精品亚洲精品 | 久久久999免费视频 日韩网站在线 | 97在线观看免费高清完整版在线观看 | 久久久国产精品一区二区中文 | 国产自制av| 久青草视频在线观看 | 国产欧美在线一区二区三区 | 久久少妇免费视频 | 91av福利视频 | 天天躁天天操 | 国内揄拍国内精品 | 免费在线黄色av | 在线观看视频你懂的 | 国产成人资源 | 91av免费看| 久久只精品99品免费久23小说 | 色狠狠综合 | 久久久国产高清 | 一级a毛片高清视频 | www.狠狠操| 九九免费在线观看 | 久久国产区 | 少妇资源站| 亚洲美女精品区人人人人 | 亚洲在线视频免费 | 日韩免费中文字幕 | 人人爽人人插 | 综合婷婷丁香 | 偷拍精偷拍精品欧洲亚洲网站 | 国产精品手机播放 | 美女精品久久久 | 中文字幕日本在线观看 | 国产一区播放 | 欧美在线视频一区二区三区 | 精品一区 精品二区 | 麻豆精品视频在线 | 中文av在线免费观看 | 久热久草在线 | 91插插插免费视频 | 亚洲a色| 日韩专区一区二区 | 国内精品久久天天躁人人爽 | 波多野结衣在线视频一区 | 国产黑丝一区二区三区 | 亚洲欧美乱综合图片区小说区 | www.夜夜操.com | 综合色综合色 | 亚洲激情在线视频 | 狠狠色狠狠综合久久 | 少妇性xxx | 亚洲经典视频 | 久久久久亚洲精品男人的天堂 | 三三级黄色片之日韩 | 黄色aaa级片 | 亚洲欧美在线观看视频 | 国产在线资源 | 国产精品18久久久久白浆 | 最近最新mv字幕免费观看 | 中国一级片在线播放 | 在线观看一区二区视频 | 国产.精品.日韩.另类.中文.在线.播放 | 在线国产能看的 | 99久久国产免费免费 | 国产香蕉97碰碰碰视频在线观看 | 在线观看免费91 | 国产99精品| 人人干人人模 | 91麻豆精品一区二区三区 | 久久精品国产亚洲aⅴ | 精品亚洲一区二区三区 | 99在线视频播放 | 亚洲视频播放 | 在线观看免费日韩 | 在线观看视频97 | 日韩一级电影网站 | 天天操天天曰 | 日韩精品免费一线在线观看 | 91视频免费看网站 | 国产精品久久久久高潮 | 天天操天天能 | 天天操操操操操 | www.91av在线| 精品视频9999 | 国产综合福利在线 | 久久只有精品 | 狠狠的干 | 亚洲高清在线观看视频 | 久久99影院 | 黄色91在线观看 | 欧美aa级| 日韩在线短视频 | 久久视频热 | 国产精品日韩久久久久 | 久久99久久99免费视频 | 久久伊人精品一区二区三区 | 日本中文字幕在线看 | 国产一区网址 | www.天天色 | 欧美一级性视频 | 日韩综合视频在线观看 | 天天操天天干天天操天天干 | 亚洲最大成人网4388xx | 久久国产经典视频 | 国产视频九色蝌蚪 | 狠狠狠操 | 亚洲国产中文字幕在线视频综合 | 在线播放亚洲 | 久久伊人八月婷婷综合激情 | 国产小视频精品 | 久久亚洲欧美日韩精品专区 | 欧美日本一区 | 开心激情久久 | 黄色在线观看www | 欧美精品视 | 国产区精品在线观看 | 日韩欧美在线视频一区二区 | 欧美亚洲免费在线一区 | 久久这里只有精品1 | 91免费高清观看 | 干 操 插| 一区二区伦理电影 | 黄色在线观看免费网站 | 国产欧美精品在线观看 | 久久久久久久久久久免费 | 色噜噜噜噜 | 午夜色性片 | 韩日视频在线 | 中文字幕 国产 一区 | 超碰人在线 | 天天综合网在线观看 | www.夜夜骑.com | 91视频高清免费 | 在线免费视频一区 | 九九综合久久 | 久久久午夜精品理论片中文字幕 | 亚洲男男gaygay无套同网址 | 黄色软件视频网站 | 日韩欧美一区二区在线观看 | 欧美男男激情videos | 91成人精品在线 | 久久艹影院 | 九九视频在线播放 | 999国内精品永久免费视频 | 亚洲日本精品视频 | 国产成人精品国内自产拍免费看 | 国产精品久久久久久久久久久久午夜 | 91完整版在线观看 | 一级免费黄色 | 中文字幕亚洲字幕 | 欧美成人猛片 | 久久久精品国产免费观看一区二区 | 国产亚洲日本 | 五月婷婷爱 | 最新高清无码专区 | 欧美在线观看小视频 | www.精选视频.com | 91在线一区二区 | 国产成人福利在线观看 | 国产高清视频色在线www | 久久精品久久久久电影 | 日韩成人黄色av | av免费线看| 久久久久草 | 国产一级在线视频 | 成人免费视频免费观看 | 国产精品午夜久久 | 成人一级视频在线观看 | 奇米影视777四色米奇影院 | 久久国产精品久久精品 | 日韩欧美在线高清 | 九九热在线精品 | 99热手机在线观看 | 日韩一区正在播放 | 日韩激情第一页 | 麻豆精品在线视频 | 99精品黄色片免费大全 | 国产裸体视频网站 | 超碰97中文| 国产精品久久嫩一区二区免费 | 精品一区二区日韩 | 99色视频在线| 九九视频在线 | 亚洲人片在线观看 | 91在线看网站 | a v在线观看 | 一区三区视频 | 免费网站观看www在线观看 | 超碰97人人干 | 国产日韩av在线 | www.97色.com| 久久资源在线 | 国产黄色片久久久 | 成人免费看片98欧美 | 免费视频色 | 亚洲欧美国产精品 | 婷婷丁香激情五月 | 这里有精品在线视频 | 97品白浆高清久久久久久 | 福利一区在线 | 欧美日韩视频在线播放 | 国产精品av久久久久久无 | 黄色软件视频大全免费下载 | 亚洲人成人天堂h久久 | 99视频在线精品国自产拍免费观看 | 国产一级片免费播放 | 97视频久久久 | 成人免费网站在线观看 | 午夜视频在线观看网站 | 人人模人人爽 | 国产第一页福利影院 | av丁香| 午夜精品视频在线 | 色激情在线| 一区二区三区在线不卡 | 国产精品毛片久久 | 干天天 | 狠狠色丁香婷婷 | 亚洲精品国产欧美在线观看 | 久久欧美综合 | 日韩欧美在线国产 | 国产黄色a | 精品视频 | 手机av在线网站 | 欧美日韩高清不卡 | 亚洲欧洲中文日韩久久av乱码 | 91大神精品视频在线观看 | 亚洲成av片人久久久 | 五月开心六月伊人色婷婷 | 91在线视频观看免费 | 欧美日韩国产一区二区三区在线观看 | 亚洲精品国产麻豆 | 91自拍视频在线观看 | 日韩综合精品 | 丁香婷婷色综合亚洲电影 | 91av视频播放 | 欧美一级片在线 | 欧美日韩国产二区三区 | 日本中文在线 | www.久久色 | 亚洲永久精品国产 | 中文区中文字幕免费看 | 久久久久久国产精品999 | 婷婷激情综合 | 五月天激情婷婷 | 久久dvd| 久草精品视频在线观看 | 欧美日韩国产精品一区二区三区 | 午夜精品久久久99热福利 | 欧美巨大荫蒂茸毛毛人妖 | 91九色蝌蚪视频 | 视频在线观看一区 | 国产v视频| 91精品网站在线观看 | 香蕉在线视频播放网站 | 色91在线视频 | 免费一级片视频 | 中文字幕高清在线播放 | 欧美日韩国产精品一区二区亚洲 | 久久精彩 | 亚洲国产精品小视频 | 久久久久国产一区二区 | 欧美福利在线播放 | 免费成人短视频 | 免费精品视频在线观看 | 国产一级免费观看视频 | 久久免费国产 | 中文字幕在线观看网址 | 久久在线一区 | 天天操夜夜操国产精品 | 麻豆视频免费在线 | 在线观看国产永久免费视频 | 波多野结衣资源 | 97视频在线免费播放 | 久久精品中文 | 欧美一级性生活视频 | 综合久久网站 | 911久久 | 五月婷久久 | 免费日韩一区 | 日本免费久久高清视频 | 91久久国产露脸精品国产闺蜜 | 日韩国产精品久久久久久亚洲 | 久久99精品久久久久蜜臀 | 婷婷久月| 美女久久久久久久 | 91精品国产一区二区在线观看 | 久久久久久美女 | 国产精品成久久久久三级 | 国产精品一区欧美 | 亚洲最大av网站 | 99久久免费看 | 欧美精品在线观看一区 | 国内精品久久久久久久影视简单 | 九九久久免费视频 | 天天干天天操天天 | 亚洲国产日韩精品 | 欧美色图88| 中文字幕第一页在线vr | 久久精品中文视频 | 91免费观看网站 | 亚洲 综合 精品 | 草久视频在线观看 | 久久国产手机看片 | 亚洲欧美偷拍另类 | 国内揄拍国产精品 | 日韩激情视频在线观看 | 欧美福利精品 | 天天干天天干天天操 | 亚洲黄色影院 | 久久久91精品国产一区二区精品 | 91亚色视频在线观看 | 国产精品久久久久久av | 最新91在线视频 | 精品久久久久免费极品大片 | 蜜臀久久99精品久久久无需会员 | 91精选在线 | 日韩在线视| 五月导航| 精品久久久久久国产91 | 草免费视频 | 日韩久久精品一区二区三区下载 | 91视频免费视频 | 日韩精品中文字幕有码 | 亚洲另类视频在线观看 | 久久久久免费精品国产 | 99福利影院| 色国产精品一区在线观看 | 久久精品精品电影网 | 日韩亚洲在线视频 | 免费成人黄色片 | 色综合亚洲精品激情狠狠 | 国产综合在线视频 | 九九免费精品视频 | 日本久久91 | 午夜视频不卡 | 视频1区2区 | 色婷婷综合视频在线观看 | 成人国产电影在线观看 | 免费视频一二三 | 日韩手机视频 | 免费视频久久久久久久 | 精品在线播放 | 国产精品一区二区三区久久久 | 日韩久久精品一区二区 | 久草热久草视频 | 久久五月精品 | 婷婷综合| 国产精品18久久久久vr手机版特色 | 精品一区二区免费在线观看 | 波多野结衣精品 | 在线一二区 | 久久专区 | 天天草夜夜| 成人午夜电影免费在线观看 | 免费观看全黄做爰大片国产 | 91精品久久久久久 | 色综合久久久久综合体桃花网 | 午夜久久久精品 | 久久国产精品电影 | 九九免费观看视频 | 日韩在线第一区 | 国产精品美女视频 | 人人澡人摸人人添学生av | 欧美色图p| 国产视频日韩 | 69国产精品视频 | 欧美天天干 | 亚洲日本国产精品 | 伊人色播 | 中文字幕中文字幕中文字幕 | 欧美国产大片 | 久草观看| 丁香久久综合 | 精品日韩中文字幕 | 中文字幕免费成人 | 人人精品 | 精品国产视频在线观看 | 天天爽夜夜爽人人爽曰av | 久久精品韩国 | 久操免费视频 | 成年人在线免费看片 | 国产91成人在在线播放 | 久久99免费观看 | 日本黄区免费视频观看 | 国产成人一区二区三区久久精品 | 激情网站 | 蜜臀av麻豆 | 亚洲精选在线 | 高清久久久 | 精品久久久免费 | 成人啊 v | 美腿丝袜一区二区三区 | 手机在线永久免费观看av片 | 国产成人av | 日韩在线看片 | 久久久久国产精品一区 | 999久久久免费精品国产 | 成人免费共享视频 | 欧美性猛片 | 有码中文在线 | 奇米网8888| 热久久电影 | 激情网色| 亚洲在线不卡 | 黄色三级久久 | 久久调教视频 | 亚洲人xxx | 精品国产日本 | 日韩av电影手机在线观看 | 国产视频一区二区在线观看 | 久久99久久99精品免观看软件 | 96久久| 天天色综合久久 | 91av综合| 亚洲精品午夜aaa久久久 | 免费视频久久久 | 在线观看视频一区二区三区 | 在线免费观看亚洲视频 | 久久开心激情 | 天天操天天干天天玩 | 激情丁香在线 | 免费亚洲婷婷 | 国产一级二级视频 | 91av免费在线观看 | 国产精品99久久久久久宅男 | 亚洲精品乱码久久久久久9色 | 中文字幕在线字幕中文 | 国产精品毛片一区二区在线看 | 日本免费久久高清视频 | 日韩精品aaa| 精品国产伦一区二区三区观看体验 | 九九九热精品免费视频观看网站 | 91中文字幕一区 | 在线视频18在线视频4k | 精品一二 | 视频国产精品 | 91精品国产99久久久久 | 精品国产乱码久久久久久久 | 亚洲精品高清在线 | 国产午夜精品久久 | 麻豆国产露脸在线观看 | 久久精品999| 91av精品| 日韩精品中文字幕av | 97在线观| a级一a一级在线观看 | 欧美伦理电影一区二区 | 亚洲精品男人的天堂 | 午夜精品久久久久久久久久久 | 日本在线精品视频 | 日韩精品欧美精品 | 在线观看久草 | 欧美做受高潮电影o | 欧美analxxxx| 日韩字幕在线观看 | 精品久久片| 九月婷婷综合网 | 91av网址 | 国产又粗又硬又爽视频 | 久久综合中文色婷婷 | 天天干夜夜擦 | av色综合| 黄在线免费观看 | 黄色三级免费 | 欧美日韩免费一区 | 91干干干| 天天综合入口 | 99精品乱码国产在线观看 | 久久综合九色综合97_ 久久久 | 一级成人免费 | 日韩一级网站 | 亚洲性少妇性猛交wwww乱大交 | 国产一级在线 | 国产精品欧美久久 | 国产精品久久久久久久久久免费看 | 国产97av| 啪啪午夜免费 | www.天天射.com| 少妇资源站 | 91人人插| 国产精品 999| 人人舔人人射 | 免费99精品国产自在在线 | 亚洲国产成人高清精品 | 成人黄色影片在线 | 日韩精品偷拍 | 999久久a精品合区久久久 | 99精品视频免费看 | 综合网久久| 久久黄色影院 | 2019免费中文字幕 | 999久久国产精品免费观看网站 | 成人理论电影 | 国产日韩在线视频 | 成人国产精品电影 | 欧美色精品天天在线观看视频 | 亚洲伦理中文字幕 | 国产午夜剧场 | 黄色三级免费网址 | av蜜桃在线 | 天天se天天cao天天干 | 亚洲丝袜中文 | 亚洲国产欧美一区二区三区丁香婷 | 亚洲精品视频免费观看 | 国产a精品 | 91精品国产高清 | 国产精品一区二区62 | 日本精品久久久一区二区三区 | 国产一级一片免费播放放a 一区二区三区国产欧美 | 一区中文字幕在线观看 | 亚洲黑丝少妇 | 91探花国产综合在线精品 | 国产日韩在线观看一区 | 99视频在线观看一区三区 | 国产热re99久久6国产精品 | 亚洲精品视频在线观看免费视频 | 久久精品1区 | 日韩一区正在播放 | 99精品免费久久久久久日本 | 在线观看av黄色 | 国产va饥渴难耐女保洁员在线观看 | 一二三久久久 | 一区二区视 | 黄色影院在线免费观看 | 成人毛片久久 | 国产资源在线观看 | 西西www4444大胆在线 | 国产在线 一区二区三区 | 九九激情视频 | 一本一道波多野毛片中文在线 | 国产精品免费观看国产网曝瓜 | 国产免费高清视频 | 国产剧在线观看片 | 国产黄色片一级三级 | 久草www | 中文字幕丝袜一区二区 | 麻豆成人小视频 | 一区二区三区高清 | 国产精品12 | 粉嫩一区二区三区粉嫩91 | 免费看黄在线网站 | 在线视频观看91 | 欧美日在线观看 | 亚洲国产成人久久 | 九九九九色| 黄色精品视频 | 在线观看中文字幕第一页 | www.人人干| 外国av网| 久久综合色天天久久综合图片 | 中文字幕在线一区二区三区 | www.五月婷婷.com | 午夜视频播放 | 999久久国产精品免费观看网站 | 在线黄色国产电影 | 91九色在线观看 | 天堂av免费看 | 中文字幕免费观看视频 | 西西444www| 国产福利午夜 | 99久久精品免费看国产一区二区三区 | 国产精品白丝av | 91精品国产高清自在线观看 | 国产97色 | 国产在线小视频 | 国产视频在线看 | av黄色免费看 | 国产精品自拍av | 日日爱影视 | 99久热 | 97人人射 | 久久久久综合精品福利啪啪 | 日韩毛片精品 | 九九热免费观看 | 国产在线视频一区二区三区 | 操操综合网 | 国产精品一区在线观看你懂的 | 国产成人精品av在线观 | 日韩精品一区二区三区丰满 | 精品国产一区二 | 国产最顶级的黄色片在线免费观看 | 在线观看视频一区二区三区 | 亚洲午夜精品久久久久久久久 | 日本三级久久 | 又黄又爽又无遮挡免费的网站 | 色综合网在线 | 久久1区 | 国产黄网在线 | 精品亚洲免a | 精品一区二区三区香蕉蜜桃 | 亚洲伊人婷婷 | 最近2019年日本中文免费字幕 | 91av资源网 | 久久精品久久精品久久39 | av国产网站 | 在线视频婷婷 | 日韩一区二区三 | 九九免费精品视频在线观看 | 91一区二区在线 | 中文字幕在线视频网站 | 色天天综合久久久久综合片 | 97综合视频 | 欧美午夜精品久久久久久孕妇 | 在线观看色视频 | 97在线看| 久久免费视频在线观看30 | 免费日韩视 | 国产日韩欧美自拍 | 欧美一级裸体视频 | 国产大尺度视频 | 国产 精品 资源 | 国产色啪 | 91传媒激情理伦片 | 免费高清看电视网站 | 色五月成人 | 亚洲精选视频免费看 | 天堂在线视频中文网 | 久久久久久视频 | 黄色tv视频 | 中文字幕日韩av | 91精品小视频 | 黄色一级大片免费看 | 91在线网址| 国产一级视屏 | 婷婷 中文字幕 | 成人在线观看免费视频 | 视频一区视频二区在线观看 | 97在线观看免费观看高清 | 91在线观看视频 | 97免费在线观看视频 | 国产xxxxx在线观看 | 狠狠色婷婷丁香六月 | 毛片888| 国产精品18久久久久久不卡孕妇 | 五月综合激情 | 中文字幕在线日 | 在线播放国产一区二区三区 | 国产在线观看91 | 国产在线观看免 | 精品国产伦一区二区三区免费 | 亚洲综合色网站 | 精品91| 国产精品美女在线观看 | 久久综合九色综合97婷婷女人 | 久久99精品国产 | 成人99免费视频 | 亚洲女同ⅹxx女同tv | 天天爱综合 | 99久久综合国产精品二区 | 久久精品99久久 | 国产va饥渴难耐女保洁员在线观看 | 在线免费观看国产黄色 | 欧美日韩在线免费观看视频 | 国产一区二区精品久久91 | 男女免费视频观看 | av电影在线免费 | 美女视频国产 | 99色精品视频 | 成人动漫一区二区三区 | 在线观看免费一区 | 国产精品美女999 | 亚洲九九九在线观看 | 91大神在线观看视频 | 亚洲 中文 在线 精品 | 国产视频中文字幕 | 亚洲1级片 | 午夜国产福利视频 | 精品一区av | 久久久久女人精品毛片 | 日日爱夜夜爱 | 色综合天天 | 狠狠狠狠狠狠狠狠 | 久久精品日产第一区二区三区乱码 | 久久男人影院 | 国产美女被啪进深处喷白浆视频 | 欧美日韩一区二区在线观看 | 91精品国产欧美一区二区 | 91免费试看 | 三级在线视频播放 | 久久国产99 | 在线免费观看黄色 | 久久国产经典视频 | 91精品视频免费在线观看 | 国产精品网红直播 | 97爱爱爱 | 免费日韩精品 | 在线99视频| 超碰97在线看 | 久久久久亚洲精品成人网小说 | 国产成人av网址 | 亚洲九九九在线观看 | 亚洲综合丁香 | 午夜久久美女 | 手机看片国产 | 911国产在线观看 | 免费网站v | 天天射天天射 | 成人免费视频观看 | 欧美精品久久久久久久久久白贞 | 婷婷五月在线视频 | 日韩毛片在线一区二区毛片 | 日韩精品中文字幕在线播放 | 久久99国产一区二区三区 | 日韩黄在线观看 | 91香蕉视频好色先生 | 久久av网| 又黄又爽又色无遮挡免费 | 五月婷婷激情 | 黄色1级大片 | 在线va视频 | 一区二区三区观看 | 国产午夜视频在线观看 | 国产精品久久久久永久免费 | 亚洲伊人网在线观看 | 欧美日韩中文国产一区发布 | 97超级碰碰碰碰久久久久 | 欧美日韩一级久久久久久免费看 | 国产污视频在线观看 | 国产欧美精品在线观看 | 久久久电影| 二区视频在线观看 | 午夜日b视频 | 久久精品视频国产 | 免费看wwwwwwwwwww的视频 久久久久久99精品 91中文字幕视频 | 99久久精 | 国产高潮久久 | 亚洲成人在线免费 | 日日操天天射 | 国产成人av电影在线 | 精品久久亚洲 | 激情av在线资源 | 日本三级在线观看中文字 | 六月丁香伊人 | av天天在线观看 | 日本99干网 | 韩国三级av在线 | 午夜视频在线观看一区二区三区 | 免费久久久久久 | 在线观看一 | 精品成人网 | 国产视频精品免费播放 | 色综合久久五月 | 亚洲视频1 | 国产99爱| 国产高清视频在线观看 | 亚洲天天综合 | 国产亚洲精品xxoo | 久久精品视 | 免费精品在线视频 | 亚洲精品国精品久久99热 | 一区二区三区污 | 欧美日韩天堂 | 九九视频精品免费 | 久久久精品小视频 | 久草在线综合网 | 久99久在线视频 | 天天爱天天操 | 欧美激情视频一区二区三区免费 | 国产精品第72页 | www.伊人网 | 在线观看岛国av | 色在线亚洲| 欧美日韩久久不卡 | 国产免费三级在线观看 | 日本一区二区三区视频在线播放 | 偷拍精品一区二区三区 | 日韩高清在线观看 | 国产视频中文字幕 | 夜夜骑日日 | 天天插日日射 | 国产资源在线观看 | 成人 亚洲 欧美 | 免费无遮挡动漫网站 | 安徽妇搡bbbb搡bbbb | 国产香蕉视频在线播放 | 日日夜夜天天射 | 亚洲国产人午在线一二区 | 久久精美视频 | 天天爱av导航| 久草视频中文在线 | www日日| 午夜精品一区二区三区在线视频 | 成人av电影免费在线观看 | 免费的黄色av | 在线国产日韩 | 国产69久久精品成人看 | 久久久久免费视频 | 9在线观看免费高清完整版在线观看明 | 亚洲影视九九影院在线观看 | 国产精品18久久久久久不卡孕妇 | 日本久久久久久久久久 | 一区二区视频播放 | 色香蕉视频 | 亚洲欧美成人综合 | 亚洲黄色免费网站 | 亚洲精品视频免费在线观看 | 麻豆久久久| 欧美精品久久久久性色 | 超碰夜夜 | 少妇av片 | 国产成人精品av久久 | 黄色福利网| 亚洲国产中文在线 | 五月激情在线 | 人人插人人插 | 视频国产在线观看18 | 色老板在线 | 中文字幕在线观看第三页 | 日韩欧美在线综合网 | 国产第一页精品 | 免费网站在线观看人 | 香蕉视频最新网址 | 欧美在线18| 三级动态视频在线观看 | www.伊人网 | 日韩高清三区 | 国产手机av在线 | 国产亚洲在线观看 | 伊人婷婷网 | 999久久国产精品免费观看网站 | freejavvideo日本免费 | 久久视频精品在线观看 | 成人一区在线观看 | 波多野结衣综合网 | 国产午夜精品在线 | 成人午夜精品福利免费 | 亚洲在线资源 | 久久97视频 | 国产成人精品电影久久久 | 玖玖爱国产在线 | 久久爽久久爽久久av东京爽 | 国产精品不卡视频 | 久草免费色站 | 色网站在线免费观看 | 午夜视频在线观看一区二区三区 | 色91av | 国产成人精品一区在线 | 成人动漫视频在线 | 久久精品国产亚洲 | a在线一区 | 婷五月天激情 | 97超碰中文字幕 | 日本久久中文 | 狠狠狠色狠狠色综合 | 日韩试看| 国产69精品久久99不卡的观看体验 | 久久久久久高潮国产精品视 | 欧美日韩视频在线 | 亚洲日本一区二区在线 | 国产一级一片免费播放放a 一区二区三区国产欧美 | 欧美福利片在线观看 | 99久久这里有精品 | 日韩精品免费 | 免费一级片观看 | 婷婷色在线观看 | 久久一视频 | 最近免费中文字幕mv在线视频3 | 国产日韩欧美在线免费观看 | 国产午夜三级一区二区三桃花影视 | 天天综合网天天综合色 | 青青河边草手机免费 | 国产精品久久久久久久久久久久久久 | 91精品视频在线看 | 夜夜躁狠狠躁 | 久久免费视频播放 | 毛片一级免费一级 | 国产热re99久久6国产精品 | 国产+日韩欧美 | 天堂激情网 | 欧美最猛性xxxxx亚洲精品 | 狠狠的干狠狠的操 | 亚洲精品456在线播放乱码 | 久草在线观看视频免费 | 亚洲精品视频网站在线观看 | 97在线观视频免费观看 | 国产免费高清 | 在线观看亚洲国产精品 | 国产日产精品久久久久快鸭 | 日韩专区av | 国产一区二区播放 | 最新免费中文字幕 | 激情视频一区二区三区 | 五月激情六月丁香 | 国产精品国产亚洲精品看不卡 | 亚洲综合成人专区片 | 五月婷婷丁香网 | 国产精品久久久久久久免费大片 | 欧美一区二区三区激情视频 | 国产69久久精品成人看 | 久久一级片| 成年人在线看片 | 中文字幕视频在线播放 | 中文字幕乱码电影 | 国产高清无线码2021 | 日本公妇在线观看高清 |