Я пытаюсь удалить специфичные для ОС двоичные файлы хрома, чтобы уменьшить размер банки, и установить их при первом запуске.Я пытался следовать документам , поэтому я удалил jar-файлы -mac, -linux и -win jxbrowser из файла pom.xml, извлек jxbrowser-mac-6.17.jar в каталог и установилJXBrowser для загрузки двоичных файлов оттуда через следующие 3 функции (по одной и объединяя их):
BrowserPreferences.setChromiumDir(path)
, System.setProperty("jxbrowser.chromium.dir", path)
и System.setProperty(BrowserPreferences.CHROMIUM_DIR_PROPERTY, path)
Указанный каталогсодержит файл jxbrowser-mac-6.17.jar и его извлеченные файлы (каталоги 7zr-mac, chromium-mac.7z, com и META_INF).Я создаю облегченный браузер со следующим:
BrowserContextParams params = new BrowserContextParams(chromiumDir.getAbsolutePath());
BrowserContext context = new BrowserContext(params);
Browser browser = new Browser(BrowserType.LIGHTWEIGHT, context);
Когда этот код запускается, файлы 7zr-mac и chromium-mac.7z исчезают из каталога, и выдается несколько ошибок, например:
Caused by: com.teamdev.jxbrowser.chromium.internal.ChromiumExtractorException: Failed to extract Chromium binaries into /Users/bsettle/CytoscapeConfiguration/3/karaf_data/tmp/browsercore-60.0.3112.113.6.17/jxbrowser-mac-6.17
at com.teamdev.jxbrowser.chromium.internal.ChromiumExtractor.extractChromiumBinariesIfNecessary(SourceFile:88)
at com.teamdev.jxbrowser.chromium.internal.ipc.IPC.<init>(SourceFile:66)
at com.teamdev.jxbrowser.chromium.internal.ipc.IPC.create(SourceFile:96)
at com.teamdev.jxbrowser.chromium.internal.ipc.IPC$a.<clinit>(SourceFile:443)
... 7 more
Caused by: java.lang.IllegalArgumentException: The /chromium-mac.7z resource cannot be found in JAR files
at com.teamdev.jxbrowser.chromium.internal.XZExtractor.a(SourceFile:112)
at com.teamdev.jxbrowser.chromium.internal.XZExtractor.a(SourceFile:69)
at com.teamdev.jxbrowser.chromium.internal.XZExtractor.extract(SourceFile:37)
at com.teamdev.jxbrowser.chromium.internal.b.run(SourceFile:1066)
at java.security.AccessController.doPrivileged(Native Method)
at com.teamdev.jxbrowser.chromium.internal.ChromiumExtractor.extractChromiumBinariesIfNecessary(SourceFile:60)
... 10 more
Все ошибки указывают на то, что JxBrowser не удалось извлечь двоичные файлы Chromium, поскольку The ___ resource cannot be found in JAR files
, но не следует ли пытаться извлечь их, если они уже существуют в каталоге Chromium?(согласно документам ).
Если я попытаюсь снова открыть браузер (указывая на каталог с отсутствующими двоичными файлами, я получаю новую ошибку:
Exception in thread "Thread-150" java.lang.NoClassDefFoundError: Could not initialize class com.teamdev.jxbrowser.chromium.BrowserContext
at org.cytoscape.cyndex2.internal.util.BrowserManager.getJXBrowser(BrowserManager.java:72)
at org.cytoscape.cyndex2.internal.util.BrowserManager.getBrowserView(BrowserManager.java:49)
at org.cytoscape.cyndex2.internal.task.LoadBrowserTask$1.run(LoadBrowserTask.java:53)
at java.lang.Thread.run(Thread.java:748)
Даже при том, что база jxbrowser-6.17.jarвсе еще поставляется вместе с приложением.
Я не уверен, что еще можно попробовать, но я бы не хотел упаковывать бинарные файлы для ОС с помощью jar, потому что это увеличивает размер файла с 8 МБ до 160 МБ..
Спасибо