List icon 目录

Chromium

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

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

二进制文件

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

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

位置

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

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

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

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

    Java
    Kotlin

    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

    Java
    Kotlin

    var engine = Engine.newInstance(EngineOptions.newBuilder(renderingMode)
        .chromiumDir(Paths.get("Users/Me/.jxbrowser"))
        .build());
    

    val engine = Engine(renderingMode) {
        chromiumDir = Path("Users/Me/.jxbrowser")
    }
    

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

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

验证

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

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

提取

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

Java
Kotlin

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

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

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

自定义交付

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

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

Java
Kotlin

class TuneBinaryDelivery implements BinariesDelivery {

    public void deliverTo(Path chromiumDir) {
        // 伪代码:
        // Path downloadedArchive = SharedNetworkDrive.download("jxbrowser-win64.gz");
        // Gzip.extract(downloadedArchive, chromiumDir);
    }
}
...
// 使用默认目录。
ChromiumBinaries.deliverToDefaultDirectory(new TuneBinaryDelivery());

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

class TuneBinaryDelivery : BinariesDelivery {
    override fun deliverTo(chromiumDir: Path) {
        // 伪代码:
        // Path downloadedArchive = SharedNetworkDrive.download("jxbrowser-win64.gz");
        // Gzip.extract(downloadedArchive, chromiumDir);
    }
}
...
// 使用默认目录。
ChromiumBinaries.deliverToDefaultDirectory(TuneBinaryDelivery())

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

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

沙盒

Windows

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

Java
Kotlin

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

val engine = Engine(renderingMode) {
    sandboxDisabled = true
}

Linux 和 macOS

目前沙盒仅支持 Windows 平台。