Права доступа к файлу запрещены при разархивировании с помощью Java-приложения, вручную работает нормально - PullRequest
0 голосов
/ 28 июня 2018

Итак, у меня есть два приложения.

  • 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);
    }
...