Chromium
本指南将介绍如何使用 JxBrowser 所使用的 Chromium 构建。
您无需在目标环境中安装 Chromium 或 Google Chrome 即可使用 JxBrowser。JxBrowser 使用并部署其自有的 Chromium 构建。
二进制文件
每个支持平台的 Chromium 二进制文件都位于相应的 JxBrowser JARs 中:
jxbrowser-win32-7.41.6.jar
– Windows 32 位的 Chromium 二进制文件。jxbrowser-win64-7.41.6.jar
– Windows 64 位的 Chromium 二进制文件。jxbrowser-mac-7.41.6.jar
– macOS 的 Chromium 二进制文件。jxbrowser-mac-arm-7.41.6.jar
– macOS Apple Silicon 的 Chromium 二进制文件。jxbrowser-linux64-7.41.6.jar
– Linux 64 位的 Chromium 二进制文件。jxbrowser-linux64-arm-7.41.6.jar
– Linux ARM 64 位的 Chromium 二进制文件。
位置
默认情况下,JxBrowser 会将 Chromium 二进制文件提取到 Linux 和 macOS 上的用户临时目录,以及 Windows 上的 AppData\Local\JxBrowser
目录。
以下是如何更改 JxBrowser 提取二进制文件的目录的方法:
使用
jxbrowser.chromium.dir
系统属性。它可以通过
System.setProperty()
方法来设置:JavaKotlinSystem.setProperty("jxbrowser.chromium.dir", "Users/Me/.jxbrowser");
System.setProperty("jxbrowser.chromium.dir", "Users/Me/.jxbrowser")
或者通过 JVM 参数来设置:
-Djxbrowser.chromium.dir="Users/Me/.jxbrowser"
在构建
Engine
时通过EngineOptions
:JavaKotlinEngine engine = Engine.newInstance(EngineOptions.newBuilder(...) .chromiumDir("Users/Me/.jxbrowser") .build());
val engine = Engine.newInstance(EngineOptions.newBuilder(...) .chromiumDir("Users/Me/.jxbrowser") .build())
该目录路径可以是相对路径也可以是绝对路径。
目录不能位于网络驱动器上。
验证
每个 JxBrowser 版本仅与其相同版本的二进制文件兼容。例如, JxBrowser 的 7.41.6.1 版本无法使用来自 JxBrowser 7.41.6 的二进制文件。
为确保 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 和 macOS
目前沙盒仅支持 Windows 平台。