Chromium

本指南将介绍如何使用 JxBrowser 所使用的 Chromium 构建。

您无需在目标环境中安装 Chromium 或 Google Chrome 即可使用 JxBrowser。JxBrowser 使用并部署其自有的 Chromium 构建。

二进制文件

每个支持平台的 Chromium 二进制文件都位于相应的 JxBrowser JARs 中:

  • jxbrowser-win32-7.38.2.jar – Windows 32 位的 Chromium 二进制文件。
  • jxbrowser-win64-7.38.2.jar – Windows 64 位的 Chromium 二进制文件。
  • jxbrowser-mac-7.38.2.jar – macOS 的 Chromium 二进制文件。
  • jxbrowser-mac-arm-7.38.2.jar – macOS Apple Silicon (ARM) 的 Chromium 二进制文件。
  • jxbrowser-linux64-7.38.2.jar – Linux 64 位的 Chromium 二进制文件。
  • jxbrowser-linux64-arm-7.38.2.jar – Linux ARM 64 位的 Chromium 二进制文件。

位置

默认情况下,JxBrowser 会将 Chromium 二进制文件提取到 Linux 和 macOS 上的用户临时目录,以及 Windows 上的 AppData\Local\JxBrowser 目录。

以下是如何更改 JxBrowser 提取二进制文件的目录的方法:

  1. 使用 jxbrowser.chromium.dir 系统属性。

    它可以通过 System.setProperty() 方法来设置:

     System.setProperty("jxbrowser.chromium.dir", "Users/Me/.jxbrowser");
    
     System.setProperty("jxbrowser.chromium.dir", "Users/Me/.jxbrowser")
    

    或者通过 JVM 参数来设置:

     -Djxbrowser.chromium.dir="Users/Me/.jxbrowser"
    
  2. 构建 Engine 时通过 EngineOptions:

     Engine engine = Engine.newInstance(EngineOptions.newBuilder(...)
             .chromiumDir("Users/Me/.jxbrowser")
             .build());
    
     val engine = Engine.newInstance(EngineOptions.newBuilder(...)
             .chromiumDir("Users/Me/.jxbrowser")
             .build())
    

目录路径可以是相对路径也可以是绝对路径。

目录不能位于网络驱动器上。

验证

每个 JxBrowser 版本只仅与其相同版本的二进制文件兼容。例如, JxBrowser 的 7.38.2.1 版本无法使用来自 JxBrowser 7.38.2 的二进制文件。

为确保 Chromium 二进制文件与当前的 JxBrowser 版本兼容,库会对这些二进制文件进行验证。

提取

默认情况下,当首次创建 Engine 时,JxBrowser 会从相应的 JAR 文件中提取二进制文件。如果您需要提前提取二进制文件,请使用以下代码:

// 使用默认目录。
ChromiumBinaries.deliverToDefaultDirectory();
// 或者使用任意目录。
ChromiumBinaries.deliverTo(Paths.get("/path/to/binaries"));

如果兼容的二进制文件已经提取过,JxBrowser 将不会再次提取它们。否则,JxBrowser 会再次提取二进制文件并覆盖现有文件。

自定义交付

从 JxBrowser 7.35 开始,开发者可以完全控制 Chromium 二进制文件到环境的交付过程。 这项功能是为高级用例设计的,例如从网络下载二进制文件,或使用自定义压缩算法。

要自定义交付,实现 BinariesDelivery 接口,并在需要时交付二进制文件:

class SharedDriveDelivery implements BinariesDelivery {

   void deliverTo(Path chromiumDir) {
       // 伪代码:
       // Path downloadedArchive = SharedNetworkDrive.download("jxbrowser-win64.gz");
       // Gzip.extract(downloadedArchive, chromiumDir);
   }
}

// 使用默认目录。
ChromiumBinaries.deliverToDefaultDirectory(new SharedDriveDelivery());

// 或使用任意目录。
ChromiumBinaries.deliverTo(chromiumDir, new SharedDriveDelivery());

如果兼容的二进制文件已经被提取,JxBrowser 将不会调用自定义交付。

沙盒

Windows

JxBrowser 支持 Windows 上的 Chromium 沙盒。 沙盒默认启用,但您可以通过适当的 Engine 选项禁用它:

Engine engine = Engine.newInstance(EngineOptions.newBuilder(...)
        .disableSandbox()
        .build());
val engine = Engine.newInstance(EngineOptions.newBuilder(...)
        .disableSandbox()
        .build())

Linux and macOS

目前沙盒仅支持 Windows 平台。

Go Top