日韩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的全部內容,希望文章能夠幫你解決所遇到的問題。

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

    91黄视频在线观看 | 日韩电影一区二区在线 | 狠狠色丁香婷婷综合久小说久 | 激情欧美日韩一区二区 | 日日日视频 | 亚洲成人国产 | 亚洲一级片免费观看 | 国产精品久久久久影院 | 在线欧美国产 | 国产一级在线播放 | 中文字幕在线观看一区 | 日日弄天天弄美女bbbb | 在线观看 国产 | 成人黄色免费在线观看 | 丁香视频在线观看 | 日韩一区二区三区观看 | 午夜婷婷网 | 国内小视频 | 欧美精品久久99 | 91视频麻豆 | 丁香av在线 | 五月婷婷综 | 99久久久久久久久 | 热精品 | av成人动漫在线观看 | 久草免费福利在线观看 | 欧美一区在线观看视频 | 久久久91精品国产一区二区三区 | 91中文字幕网 | 久久综合九色综合97婷婷女人 | 91最新中文字幕 | 在线香蕉视频 | 国内精品久久久久影院日本资源 | 日韩视频在线观看免费 | 国产精品va最新国产精品视频 | 精品久久久一区二区 | 麻豆成人在线观看 | 手机成人免费视频 | 日韩二区在线观看 | 亚洲精品免费在线 | 亚洲国产小视频在线观看 | 欧美日韩国产综合一区二区 | 天天躁天天狠天天透 | 国产在线一线 | 国产精品成久久久久 | 国产玖玖精品视频 | 中文字幕在线观看av | 久久成人精品视频 | 中文字幕在线观看一区二区 | 丁香激情综合国产 | 国产亚洲欧洲 | 中文字幕在线观看网址 | 久久99国产精品免费 | 丁香九月激情综合 | 狠狠干成人| 国产成人久久av免费高清密臂 | 懂色av一区二区在线播放 | 日韩有码中文字幕在线 | 在线观看黄网站 | 久草网在线视频 | 99r在线精品| 婷婷五月色综合 | 亚洲情感电影大片 | 91亚洲狠狠婷婷综合久久久 | 成年人免费在线观看网站 | 日韩三级免费 | 日本最新高清不卡中文字幕 | 欧美久久久久久久久久久 | 久久成人一区二区 | 国产日韩在线观看一区 | 91在线中字 | 99精品久久久久久久 | 蜜臀久久99精品久久久无需会员 | 天天操天天射天天爱 | 亚洲国产网站 | 久久亚洲福利视频 | 国产一区二区免费在线观看 | 这里只有精品视频在线观看 | av黄色亚洲 | 日韩在线视频播放 | 国产日产精品久久久久快鸭 | 日韩中字在线观看 | 少妇高潮冒白浆 | 午夜在线日韩 | 成人污视频在线观看 | 国产精品久久久久久爽爽爽 | 久久久久久久久久福利 | 色射爱| 天天做日日做天天爽视频免费 | 999久久久久久久久久久 | 久久天天躁狠狠躁夜夜不卡公司 | 超碰在线天天 | 99热在线国产| 免费日韩电影 | 免费在线91 | 黄av资源 | 国产精品黄色 | 国产精品av一区二区 | 国产一级久久久 | 国产一区在线视频 | av网站手机在线观看 | 久久久精品日本 | 99精品热视频只有精品10 | 超碰在线个人 | 国产视频第二页 | 日韩高清免费在线观看 | 久久夜色网 | 日本99干网| 国产精品一区二区在线免费观看 | 午夜视频一区二区三区 | 92中文资源在线 | 久久国产一区二区 | 午夜三级毛片 | 日日夜夜干 | 国产精品网红直播 | 日日摸日日碰 | 国产欧美精品一区aⅴ影院 99视频国产精品免费观看 | 男女拍拍免费视频 | 亚洲午夜精品一区二区三区电影院 | 国产美女视频免费观看的网站 | 国产精品18久久久久久久 | 欧美精彩视频在线观看 | 国产精品久久久久久久久久久免费看 | 成人播放器 | 狠狠色婷婷丁香六月 | 国产精品成久久久久 | 日韩在线观看视频中文字幕 | 麻豆久久精品 | 久久97超碰 | 欧美日韩免费一区 | 色综合五月 | 久久久久五月天 | 在线观看视频黄色 | 天天插天天操天天干 | 久久精品国产第一区二区三区 | 午夜av影院| 久久av伊人| 99精品亚洲 | www黄| 久久综合网色—综合色88 | 激情av网 | 92国产精品久久久久首页 | 激情婷婷色 | 欧美日韩在线观看不卡 | 久久精品国产一区二区 | 国产高清绿奴videos | 久久国产精品99国产精 | 国产三级视频在线 | 婷婷六月天在线 | 国产亚洲视频系列 | 毛片.com | 97国产在线视频 | 精品视频在线免费 | 中文字幕在线色 | 一区二区影视 | 91精品国产综合久久久久久久 | 免费色黄 | 色婷婷午夜 | 中文字幕制服丝袜av久久 | 精品产品国产在线不卡 | 樱空桃av | 四虎影视8848aamm | 97福利在线观看 | 国产伦理久久精品久久久久_ | 午夜精品一二三区 | 欧美日韩69 | 欧美一二三专区 | 在线观看国产日韩 | 欧美日韩综合在线观看 | www国产精品com | 久久99亚洲热视 | 日韩mv欧美mv国产精品 | 亚洲国产精品影院 | 91精品国产91 | 国产精品一区久久久久 | 在线观看中文 | 婷婷丁香色 | 色综合天天 | 伊人五月 | 国产美女视频一区 | 91精品婷婷国产综合久久蝌蚪 | 精品久久久久久一区二区里番 | 国产成人精品免高潮在线观看 | 国产剧情一区二区在线观看 | 国产精品久久在线观看 | 综合久久综合久久 | 最近免费中文字幕大全高清10 | 久久五月婷婷丁香社区 | 久久久久久久国产精品影院 | 欧美在线观看禁18 | 国产护士av | 国产精品入口传媒 | 天天曰天天爽 | 在线激情小视频 | 午夜黄网 | 日日干天天插 | 丁香花在线观看视频在线 | 久草影视在线观看 | 黄色h在线观看 | 91精品国产91| 久久再线视频 | 欧美性天天 | 999视频在线观看 | 国产精品久久久久久久久久妇女 | 97超碰人人澡人人 | 国产很黄很色的视频 | 欧美亚洲成人xxx | 99久久www | 色婷婷成人网 | 日韩精品一区二区三区中文字幕 | 久草线| 日韩高清精品免费观看 | 99久久精品国产亚洲 | 国产一级在线看 | 日韩专区一区二区 | 日日夜夜操av | 国产精品午夜8888 | 日韩高清精品一区二区 | 色综合天天狠天天透天天伊人 | 精品国产一区二区三区在线 | 在线观看日韩一区 | 97网站| 亚洲午夜av | 很黄很色很污的网站 | 91九色国产在线 | 成人a视频片观看免费 | 亚洲日本一区二区在线 | 国产精品久久久久久久久久99 | 国产黄色片免费 | 91中文字幕视频 | 国产欧美精品一区二区三区四区 | 韩国精品一区二区三区六区色诱 | 国产在线不卡视频 | 一区二区三区四区在线免费观看 | 国产精品乱码久久 | 久久天堂亚洲 | 一本色道久久精品 | 偷拍精偷拍精品欧洲亚洲网站 | 日韩午夜电影 | a天堂最新版中文在线地址 久久99久久精品国产 | 中国一级片视频 | 国产视频手机在线 | av中文在线播放 | 夜夜躁狠狠躁日日躁视频黑人 | 国产精品久久亚洲 | 99热99 | av免费片 | 日韩伦理一区二区三区av在线 | 中文字幕专区高清在线观看 | 免费看一级特黄a大片 | 亚洲一级性 | 久久精品亚洲一区二区三区观看模式 | 中文字幕在线看视频 | 亚洲精品免费在线视频 | 国产免费三级在线观看 | 国产高清视频在线 | 超碰在线1 | 少妇bbbb揉bbbb日本 | a√国产免费a| 免费a视频 | 日韩av午夜在线观看 | 久久久久久久久久免费视频 | 日韩高清免费电影 | 欧美性大战久久久久 | 蜜臀av夜夜澡人人爽人人桃色 | 亚洲aⅴ久久精品 | 免费在线观看中文字幕 | 五月婷婷在线综合 | 久草在线久草在线2 | 亚洲欧洲国产视频 | 天天干夜夜爽 | 欧美日韩在线观看一区 | 日本黄色免费在线观看 | 久久国产精品精品国产色婷婷 | 色噜噜狠狠色综合中国 | 久操中文字幕在线观看 | 在线免费观看视频你懂的 | 狠狠色丁香婷婷综合最新地址 | 精品久久久久一区二区国产 | 国产精品成人免费 | 国产片免费在线观看视频 | 91亚洲精品乱码久久久久久蜜桃 | 97综合视频 | 91免费高清 | 久久精品欧美视频 | 成人中文字幕+乱码+中文字幕 | 日韩精品免费在线观看视频 | 福利一区二区三区四区 | 69精品人人人人 | 日日碰狠狠添天天爽超碰97久久 | 久久精品电影网 | 国产精品福利无圣光在线一区 | 日韩欧美视频免费观看 | 天天碰天天操视频 | 深爱激情婷婷网 | 在线看片日韩 | 色狠狠一区二区 | 开心激情综合网 | 婷婷在线色 | 国产精品久久久久久久午夜片 | 欧美日韩一二三四区 | 亚洲精品成人在线 | 久久久精品在线观看 | 九月婷婷人人澡人人添人人爽 | 天天舔天天搞 | 国产综合香蕉五月婷在线 | 欧美日韩成人 | 日韩免费看视频 | 日韩高清在线一区二区三区 | 在线观看免费成人av | 国产日韩精品在线观看 | 国产精品久久久久久爽爽爽 | av资源免费观看 | 久久综合激情 | 91视频在线观看下载 | 亚洲精品免费看 | 欧美另类一二三四区 | 久久超| 又粗又长又大又爽又黄少妇毛片 | 中文字幕成人在线 | 日韩欧美高清不卡 | 麻豆 free xxxx movies hd | 色综合久久88色综合天天 | 毛片一二区 | 国产粉嫩在线观看 | 人人爱人人舔 | 色视频一区 | 玖玖玖在线| 日韩影视在线观看 | 国产成人99av超碰超爽 | 日韩av电影中文字幕 | 香蕉手机在线 | 在线激情影院一区 | 麻豆免费在线播放 | 成人免费xxxxxx视频 | 最新中文在线视频 | 成人久久精品视频 | 久久久久久久久久久久电影 | 少妇搡bbb| 91在线日本 | 深爱激情av | 在线亚洲天堂网 | 亚洲片在线资源 | 日韩在线免费不卡 | 国产污视频在线观看 | 国产在线999 | 国产在线播放观看 | 免费网站v | 五月天久久婷 | 久久午夜鲁丝片 | 久久一级电影 | 丝袜美腿一区 | 午夜精品久久久久久99热明星 | 欧美一级视频免费看 | 精品成人久久 | 国产啊v在线 | 国产91学生粉嫩喷水 | 亚洲精品国久久99热 | 日本精品视频一区 | 国产精品久久久久久久久久直播 | 日日夜夜天天综合 | 亚洲人xxx| 免费碰碰 | 国产精品乱码一区二三区 | 国产在线探花 | 欧美精品在线免费 | 久久色在线观看 | 久久免费视频这里只有精品 | 国产午夜影院 | 丁香伊人网| 中文字幕日本电影 | 婷婷六月中文字幕 | 亚洲欧洲精品在线 | 开心丁香婷婷深爱五月 | 久久国产影院 | 国产精品电影一区二区 | 成人午夜性影院 | 精品视频中文字幕 | 97综合网 | 成人精品亚洲 | 久一久久 | 日本中文字幕免费观看 | 香蕉视频在线观看免费 | 成人av中文字幕在线观看 | 免费av高清 | 五月开心六月伊人色婷婷 | 国色综合 | 日本精品久久久久 | 91精品国产91 | 日韩在线观看网站 | 国产精品成人一区二区 | 久久久91精品国产一区二区三区 | 久久精品综合一区 | 五月天色丁香 | 黄色免费观看网址 | 一本到视频在线观看 | 欧美一区二区三区不卡 | 黄色在线观看免费网站 | 韩国av电影在线观看 | 91免费视频网站在线观看 | 久久99视频 | 国产无套视频 | 日日爱视频 | 久章草在线观看 | 欧美日性视频 | 国产精品久久久久久久久久不蜜月 | 一区在线观看 | 久草在线中文视频 | 久久五月天综合 | 亚洲高清久久久 | 特级西西444www大精品视频免费看 | 日韩有码第一页 | 久章操 | 国产精品9999久久久久仙踪林 | 精品黄色在线观看 | 超碰免费av | 婷婷久久一区 | 国产成人免费av电影 | 天天色天天操天天爽 | 国产玖玖精品视频 | 成年人在线观看视频免费 | 高清免费av在线 | 天堂av观看 | 最新的av网站| 日韩在线视频网 | 人人干在线 | 天天亚洲综合 | 狠狠色噜噜狠狠狠狠2022 | av免费在线播放 | 超碰.com| 视频福利在线 | 99久久精品免费看国产 | 中文字幕在线国产精品 | 日韩av播放在线 | 天天干夜夜夜操天 | 国产精选在线观看 | 国产又黄又爽无遮挡 | 欧美少妇xx | 波多野结衣在线播放一区 | 成人毛片一区 | 国产成人在线观看 | www.黄色在线 | 久久免费在线观看 | 久久久免费av | 亚洲精品在线观看视频 | 欧美激情第一页xxx 午夜性福利 | 射射射av| 国产视频69| 日韩欧美在线第一页 | 月下香电影 | 97超碰中文字幕 | 有码视频在线观看 | 亚洲 综合 专区 | 日韩影视在线观看 | 日韩精品首页 | 国产精品日韩在线播放 | 射综合网 | 日韩高清av在线 | 日韩大片免费在线观看 | 中文字幕在线观看免费观看 | 免费看的黄色网 | 国产精品久久久久久久免费观看 | 精品视频www | 97成人超碰 | 久久九九久久九九 | 最新av免费 | 天天干天天操天天干 | 国产精品麻豆视频 | 人人插人人费 | 日本精品中文字幕在线观看 | 国产一级二级视频 | 日韩精品免费在线观看 | 91亚洲网| 久久桃花网 | 一二区av| 久草成人在线 | av 一区二区三区四区 | av日韩在线网站 | 久久精品波多野结衣 | 麻豆视频免费在线 | 成人欧美在线 | 丁香婷婷色月天 | 人人玩人人添人人 | 丁香六月综合网 | 日韩欧美在线播放 | 国产高清视频 | 激情婷婷欧美 | 久久九九九九 | 黄av在线 | 国产传媒中文字幕 | 久久久久国产一区二区三区 | 成人黄色电影视频 | 91精品国产乱码久久 | 99精品久久精品一区二区 | 97精品国自产拍在线观看 | 精品国产电影 | 偷拍精偷拍精品欧洲亚洲网站 | 啪啪精品 | 99成人精品| 伊人小视频 | 国产香蕉97碰碰碰视频在线观看 | 狠狠干狠狠久久 | bbb搡bbb爽爽爽 | 国产护士av| 天天干天天插伊人网 | 久久精品牌麻豆国产大山 | 黄色成人在线 | 一级片免费观看视频 | 在线观看视频一区二区三区 | 91麻豆精品国产91久久久久 | 久久久久久久久网站 | 丁香六月国产 | 国产成人av电影在线观看 | www欧美xxxx| 黄色性av| 91成人免费在线 | 国产精品一区二区av麻豆 | 在线看片91 | 夜夜天天干| 国产免费片 | 亚洲日本va午夜在线影院 | 亚洲成av人片在线观看无 | 日韩av手机在线观看 | 夜添久久精品亚洲国产精品 | 中文字幕成人一区 | 99免费在线视频 | 看全黄大色黄大片 | 天堂av在线网站 | 五月婷婷香蕉 | 国产精品久久久久aaaa九色 | 四虎成人精品在永久免费 | 93久久精品日日躁夜夜躁欧美 | 青青久视频 | 久草视频在线免费 | 国产精品99视频 | 成人a级网站 | 国产三级av在线 | 精品少妇一区二区三区在线 | 最新高清无码专区 | 日韩视频在线播放 | 国产午夜三级一区二区三 | 主播av在线| 黄色资源在线观看 | 国产在线不卡一区 | 欧美日本日韩aⅴ在线视频 插插插色综合 | 亚洲婷婷网 | 日韩精品不卡在线 | 爱干视频| 久久在线精品 | 天天摸天天操天天舔 | 亚洲天堂va| 国产成在线观看免费视频 | 亚洲精品在线看 | 在线免费三级 | 日韩三级中文字幕 | 一区二区视频电影在线观看 | 91污污视频在线观看 | 日韩a在线 | 韩国av免费在线 | 欧美地下肉体性派对 | 国产精品视频免费观看 | 中文字幕av最新更新 | 久久9精品 | 国产视频精选 | 亚洲五月综合 | 四虎永久免费网站 | 1000部18岁以下禁看视频 | 玖玖精品视频 | 在线观看 国产 | 亚洲动漫在线观看 | 日韩丝袜在线观看 | 五月天久久婷 | 美女网站视频久久 | 亚洲精品国产欧美在线观看 | 天天草天天插 | 久久精品视频在线免费观看 | 色婷婷导航 | 国产精品国产三级国产专区53 | 丁香六月久久综合狠狠色 | 丁香一区二区 | 99精彩视频| 色91在线视频 | 91视频一8mav | 久久精品国产精品亚洲 | www.久久久.cum | 青草视频在线免费 | 成人在线观看你懂的 | 综合网五月天 | 久久国产亚洲视频 | 中文字幕亚洲精品日韩 | 日韩在线视频不卡 | av成人亚洲| 中文字幕日韩国产 | 91精品久久久久久综合五月天 | 国产一级免费在线观看 | 国产男女爽爽爽免费视频 | 久久午夜网| 欧美成人免费在线 | 天天干,天天操 | 中文字幕在线观看免费高清完整版 | 夜夜狠狠 | av黄色在线| 超碰人人乐 | 一级片色播影院 | 久av在线| 成人在线观看资源 | 毛片网在线播放 | 精品久久一 | 九九免费视频 | 久久少妇av | 成人在线免费小视频 | 日韩精品中文字幕久久臀 | 国产高清视频免费 | 天天色天天干天天 | 日日爱av| 天天做天天看 | 国产精品久久中文字幕 | av中文字幕在线观看网站 | 日韩中文字幕一区 | 欧美性视频网站 | 精品国产日本 | 日韩特黄一级欧美毛片特黄 | 超碰在线成人 | 国产精品高潮在线观看 | 色香蕉视频 | 成人午夜电影久久影院 | 激情网第四色 | 欧美污污视频 | a成人在线| 精品主播网红福利资源观看 | 国产精品久久久久久一二三四五 | 国产激情电影综合在线看 | 国产精品毛片久久久久久 | 久久久九色精品国产一区二区三区 | 免费视频一级片 | 久久一区二区三区超碰国产精品 | 中文字幕首页 | 香蕉视频91| 免费三级骚 | 久久精品4 | 亚洲精品中文在线 | 午夜精品电影一区二区在线 | 久久色在线观看 | 午夜在线资源 | 在线观看精品视频 | 麻豆精品传媒视频 | 日韩av不卡在线观看 | 久久久久久久亚洲精品 | 最新久久久 | 五月婷婷中文 | 色av色av色av | 91精品国产91| 亚洲 欧美 日韩 综合 | 天天操天天舔天天干 | 国产91精品一区二区 | www日韩欧美 | 免费看久久 | 亚洲国产精品电影在线观看 | av黄色免费在线观看 | 国产又黄又爽无遮挡 | 国产精品久久久一区二区 | 国产无遮挡猛进猛出免费软件 | 成人全视频免费观看在线看 | 99精品国产99久久久久久福利 | 精品久久精品久久 | 日韩在线第一区 | 欧美日韩中文字幕视频 | 天天干,夜夜爽 | 热99在线 | 美女视频黄免费的久久 | 一区久久久| 草久在线播放 | 国产看片网站 | 中文字幕在线视频一区 | 国产精品69av| 六月激情 | 亚洲精品国产综合久久 | 久久久久五月天 | 国产区在线看 | 丝袜美腿av | 亚洲成人黄色 | 91高清一区| 久久精品亚洲一区二区三区观看模式 | 亚洲成av人片在线观看无 | 久久99精品国产一区二区三区 | 粉嫩av一区二区三区免费 | av日韩在线网站 | 夜夜骑天天操 | 久久精品站 | 日韩电影在线看 | 欧美在线你懂的 | 99色在线视频 | 日韩av手机在线观看 | 色偷偷88888欧美精品久久久 | 麻豆精品91 | 国产在线播放观看 | 亚洲精品在线观看不卡 | 91成人观看 | 伊人伊成久久人综合网小说 | 久久69精品久久久久久久电影好 | 婷婷中文字幕 | 国产综合福利在线 | 天天干天天做天天爱 | 欧美日韩3p | 国产va在线 | 日日骑 | 色婷婷www| 999久久国精品免费观看网站 | 草久视频在线 | 91精品国产91久久久久久三级 | 国产精品h在线观看 | 亚洲h在线播放在线观看h | 国产精品99久久久久久小说 | 日日草视频 | 天天爽天天做 | 日韩中文字幕a | 国产精品免费在线播放 | 国产精品免费在线 | 久久少妇免费视频 | av在线等 | 激情久久伊人 | 久久午夜精品影院一区 | 欧美a免费| 超碰久热 | 操操操日日日干干干 | 91人人人| 91夫妻自拍| 成人久久免费 | 91污视频在线 | 91丨九色丨国产在线观看 | 国产v在线播放 | www.久久精品视频 | 国产色婷婷在线 | 亚洲一级黄色大片 | 手机av电影在线 | 激情综合网色播五月 | 国产极品尤物在线 | 狠狠88综合久久久久综合网 | 色午夜影院 | 久久久久久高潮国产精品视 | 日产中文字幕 | 中文字幕最新精品 | 综合中文字幕 | 国产在线日本 | 中文字幕 国产专区 | 国产亚洲久一区二区 | 日韩三级久久 | 中文字幕日韩无 | 久久97精品 | 日本中文字幕在线电影 | 在线观看av网 | 久久精品资源 | 成人性生交大片免费观看网站 | 国产黄色视 | 成片免费观看视频大全 | 99视频在线观看视频 | 久久久国产影院 | 99久国产| 久久视频在线视频 | 免费看成人 | 91传媒视频在线观看 | 国产高清中文字幕 | 色噜噜色噜噜 | 免费日韩 精品中文字幕视频在线 | 国产尤物在线视频 | 国产 一区二区三区 在线 | 中午字幕在线 | 麻豆免费看片 | 中文字幕在线观看第三页 | 中文在线a在线 | 九九在线免费视频 | 99久久久久国产精品免费 | 久久午夜精品视频 | av中文字幕在线看 | 日日干日日 | av福利资源 | 国产色视频一区 | 国产精品av免费观看 | 一级久久精品 | 91完整视频 | 亚洲aⅴ一区二区三区 | 91天堂影院 | 日韩和的一区二在线 | 美女视频免费精品 | 国产精品自产拍在线观看网站 | 国产视频在线观看免费 | 中文字幕在线免费播放 | 日本午夜在线观看 | 不卡的av电影在线观看 | 久热av在线| 久久久久久国产精品免费 | 成人中文字幕+乱码+中文字幕 | 九月婷婷人人澡人人添人人爽 | av丁香 | 一区二区三区高清在线观看 | 日本特黄一级片 | 少妇超碰在线 | 国产二区免费视频 | 在线观看中文字幕一区二区 | 国产一级精品视频 | 91精品久久久久久综合乱菊 | 丝袜网站在线观看 | 在线 视频 一区二区 | 狠狠狠色丁香婷婷综合激情 | 午夜精品久久久久 | 久久国产精品影视 | 精品国产乱码久久久久久1区2匹 | 国产黄在线播放 | 在线免费观看麻豆视频 | 久久久久女人精品毛片九一 | 欧美三级在线播放 | 中午字幕在线 | 成人影音av| 久草电影在线观看 | 碰碰影院 | 337p日本欧洲亚洲大胆裸体艺术 | 激情视频免费在线观看 | 91黄色成人 | 日韩在线短视频 | 久久69av| 国产精品久久久久久久午夜 | 中文字幕av在线免费 | 久久人人爽爽人人爽人人片av | 在线观看免费福利 | 97国产精品视频 | 国产精品毛片一区视频播不卡 | 久久人人插 | 综合黄色网| 婷婷av在线| 麻豆传媒一区二区 | 日韩精品一区二区在线视频 | 美女免费视频黄 | 久久精品国产第一区二区三区 | 国产精品自产拍在线观看中文 | 精品99在线观看 | 国产一二三在线视频 | 久久艹免费 | 久久国产精品第一页 | 久久久不卡影院 | 午夜av免费观看 | 亚洲成人麻豆 | 精品一区 在线 | 日日干天天操 | 亚洲日韩欧美视频 | 日本精品视频在线观看 | 天天色中文| 四虎国产精 | 久久精品久久精品久久精品 | avwww在线 | 久久不射影院 | 日韩免费二区 | 狠狠干天天射 | 韩国av免费观看 | 免费69视频 | 99这里只有精品视频 | 欧美调教网站 | 激情综合交 | 三上悠亚一区二区在线观看 | 手机av在线网站 | 免费观看9x视频网站在线观看 | 国产精品成人在线 | 日本女人在线观看 | 免费久草视频 | 欧美不卡在线 | 青春草免费视频 | 黄色片网站av| 久草在线免 | 午夜精品一区二区三区免费视频 | 久久嗨| 免费在线观看一级片 | 在线观看中文字幕一区二区 | 久久精品国产成人精品 | 久久小视频 | 天天操天天是 | 亚洲欧美日韩在线看 | 亚洲美女视频在线 | 日批视频在线观看免费 | 男女精品久久 | 成人av免费在线 | 久久中文精品视频 | 亚洲va欧美va| 国产男女免费完整视频 | 国产丝袜 | 香蕉97视频观看在线观看 | 91pony九色丨交换 | 国产午夜av | 91大神dom调教在线观看 | 精品一区二区三区在线播放 | 亚洲成人av一区 | 精品国产成人 | 草久中文字幕 | 韩国av免费看 | 在线观看视频你懂得 | 婷婷精品国产欧美精品亚洲人人爽 | 97视频在线播放 | 黄色网址在线播放 | 久久综合色综合88 | 人成在线免费视频 | 激情五月在线视频 | 日本久久综合网 | 欧美成人日韩 | 日韩免费电影网站 | 精品国产成人 | 久久精品专区 | 国产精品情侣视频 | 精品久久国产一区 | 国产亚洲情侣一区二区无 | 91色偷偷 | 久久你懂得| 黄色大片入口 | 天天操天天射天天添 | 成年人在线电影 | 国产99久久九九精品免费 | 99久久久久久久 | 麻豆极品| 99婷婷| 国产福利资源 | 天天翘av| 国产欧美精品一区二区三区 | 97涩涩视频 | 国产一区观看 | www.五月天激情 | 综合网天天 | av电影久久 | 日韩精品免费一区二区三区 | 国产精品免费观看国产网曝瓜 | 在线观看一区二区精品 | 成人一级 | 激情五月六月婷婷 | 国产精品永久 | 97国产精品免费 | 国产精品乱码在线 | 色天堂在线视频 | 国产精品一区二区久久久久 | 中文字幕av播放 | 亚洲五月六月 | 久久99精品国产 | 久久在现| 九九免费视频 | 国产福利一区在线观看 | 成人av在线网 | 国产不卡高清 | 久久精品视频网 | 在线免费国产 | 天天人人综合 | 日韩二区三区在线 | 最近最新中文字幕视频 | 可以免费看av| 在线观看免费91 | 久久久久色 | 九九久久婷婷 | 日韩久久久久久久久久 | 一区二区三区免费在线播放 | 免费日韩在线 | 久久高清免费 | 日本久久电影网 | 国产成年人av | 亚洲欧美怡红院 | 夜夜躁日日躁 | 蜜臀av免费一区二区三区 | 精品一区二区av | 午夜少妇 | 99久久99久久精品国产片 | 精品国产乱子伦一区二区 | 欧美一区二区三区在线播放 | 国产一级精品视频 | 天天干夜夜爱 | 久草视频免费看 | 成人av在线直播 | 日韩黄视频 | 天天天色综合a | 又黄又刺激视频 | 99精品国产在热久久下载 | 精品a在线| 欧美午夜久久 | av不卡在线看 | 日韩毛片在线免费观看 | 久久精品美女视频网站 | 婷婷 综合 色 | 在线观看av免费观看 | 日韩av看片| 国产成人精品午夜在线播放 | 看av在线| 欧美日韩国产区 | 国产日韩欧美在线观看视频 | 99r精品视频在线观看 | 99热最新在线 | 五月丁婷婷| 国产无套精品久久久久久 | 亚洲电影影音先锋 | 中文字幕传媒 | 国产高清视频免费 | 欧美a视频| 国产高清视频网 | 久久精品观看 | 成人a在线| 免费三级在线 | 成人黄色视 |