Итак, у меня есть два приложения.
- 1) Запуск приложения для загрузки версий клиентских приложений
(v2, v3, v3 и т. д.).
- 2) Клиент, которым пользуется конечный пользователь.
Рабочий процесс в основном заключается в открытии модуля запуска и выборе версии клиента для запуска.
ProcessBuilder processBuilder = new ProcessBuilder(revision.getPath() + "/" + AutoUpdate.OSX_EXE);
AutoUpdate.process = processBuilder.inheritIO().start();
Клиент использует jxBrowser и требует двоичные файлы, необходимые для загрузки / распаковки. Однако, когда я загружаю .zip, распаковываю и устанавливаю права доступа к файлу для исполняемого файла и запускаю его из панели запуска, он не работает.
Но когда я загружаю версию .zip, разархивирую ее сам и запускаю без программы запуска, она работает просто отлично?
Это Java-приложение, скомпилированное в native с помощью excelsiorjet.
Это ошибка, которую я получаю:
Caused by: com.teamdev.jxbrowser.chromium.internal.ChromiumExtractorException: Failed to extract Chromium binaries into /var/folders/kb/f884blms2g56m8xscqnsg9jh0000gn/T/jxbrowser-chromium-60.0.3112.113.6.16
at com.teamdev.jxbrowser.chromium.internal.ChromiumExtractor.extractChromiumBinariesIfNecessary(Unknown Source)
at com.teamdev.jxbrowser.chromium.internal.ipc.IPC.<init>(Unknown Source)
at com.teamdev.jxbrowser.chromium.internal.ipc.IPC.create(Unknown Source)
at com.teamdev.jxbrowser.chromium.internal.ipc.IPC$a.<clinit>(Unknown Source)
... 4 more
Caused by: java.lang.RuntimeException: java.io.IOException: Cannot run program "/var/folders/kb/f884blms2g56m8xscqnsg9jh0000gn/T/jxbrowser-chromium-60.0.3112.113.6.16/7zr-mac": error=13, Permission denied
at com.teamdev.jxbrowser.chromium.internal.XZExtractor.extract(Unknown Source)
at com.teamdev.jxbrowser.chromium.internal.b.run(Unknown Source)
at java.security.AccessController.<unknown>(Unknown Source)
... 8 more
Caused by: java.io.IOException: Cannot run program "/var/folders/kb/f884blms2g56m8xscqnsg9jh0000gn/T/jxbrowser-chromium-60.0.3112.113.6.16/7zr-mac": error=13, Permission denied
at java.lang.ProcessBuilder.start(Unknown Source)
at java.lang.Runtime.exec(Unknown Source)
at java.lang.Runtime.exec(Unknown Source)
at com.teamdev.jxbrowser.chromium.internal.xz.XZ.decompress(Unknown Source)
... 11 more
Caused by: java.io.IOException: error=13, Permission denied
at java.lang.UNIXProcess.forkAndExec(Native Method)
at java.lang.UNIXProcess.<init>(Unknown Source)
at java.lang.ProcessImpl.start(Unknown Source)
Вот мой код, меняющий права доступа:
if(AutoUpdate.OS.equalsIgnoreCase("OSX")){
File exe = new File(localPath + AutoUpdate.OSX_EXE);
exe.setReadable(true);
exe.setExecutable(true);
exe.setWritable(true);
File folder = new File(localPath + "rt");
folder.setReadable(true);
folder.setExecutable(true);
folder.setWritable(true);
}
else{
File exe = new File(localPath + AutoUpdate.WINDOWS_EXE);
exe.setReadable(true);
exe.setExecutable(true);
exe.setWritable(true);
File folder = new File(localPath + "rt");
folder.setReadable(true);
folder.setExecutable(true);
folder.setWritable(true);
}