Browse Source

KERNEL-20956 修复jxbrowser因解压文件导致的启动失败问题

release/11.0
vito 1 month ago
parent
commit
372e7d380f
  1. 18
      designer-base/src/main/java/com/fr/design/jxbrowser/JxEngine.java

18
designer-base/src/main/java/com/fr/design/jxbrowser/JxEngine.java

@ -3,8 +3,10 @@ package com.fr.design.jxbrowser;
import com.fr.design.DesignerEnvManager;
import com.fr.design.ui.ModernUIConstants;
import com.fr.log.FineLoggerFactory;
import com.fr.stable.CommonUtils;
import com.fr.value.ClearableLazyValue;
import com.fr.web.struct.AssembleComponent;
import com.teamdev.jxbrowser.engine.ChromiumBinariesExtractionException;
import com.teamdev.jxbrowser.engine.Engine;
import com.teamdev.jxbrowser.engine.EngineOptions;
import com.teamdev.jxbrowser.engine.RenderingMode;
@ -12,8 +14,11 @@ import com.teamdev.jxbrowser.engine.event.EngineCrashed;
import com.teamdev.jxbrowser.net.Network;
import com.teamdev.jxbrowser.net.Scheme;
import com.teamdev.jxbrowser.net.callback.VerifyCertificateCallback;
import com.teamdev.jxbrowser.os.Environment;
import org.jetbrains.annotations.NotNull;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.Collections;
import java.util.Map;
@ -41,7 +46,18 @@ public class JxEngine {
.addSwitch("--disable-google-traffic")
.addScheme(Scheme.of(ModernUIConstants.EMB_TAG),
new NxInterceptRequestCallback(this::getComponent, this::getParameterMap));
Engine engine = Engine.newInstance(builder.build());
Engine engine;
try {
engine = Engine.newInstance(builder.build());
} catch (ChromiumBinariesExtractionException e) {
Path chromiumDir = Paths.get(System.getProperty("jxbrowser.chromium.dir", Environment.defaultChromiumDir().toString()));
if (CommonUtils.deleteFile(chromiumDir.toFile())) {
FineLoggerFactory.getLogger().warn("[jxbrowser]Retry start engine success after delete chromium dir manually: {}", chromiumDir);
engine = Engine.newInstance(builder.build());
} else {
throw e;
}
}
engine.on(EngineCrashed.class, (event) -> {
FineLoggerFactory.getLogger().error("jxBrowser engine crashed with exitCode: {}", event.exitCode());
event.engine().close();

Loading…
Cancel
Save