Отказано в доступе. Linux

Рейтинг: 0Ответов: 0Опубликовано: 14.02.2023

Есть некий лаунчер, который скачивает свою JRE архивом и разархивирует ее. Далее из-под этой jre пытается запустить другую java программу.

После разархивации архиве с своей JRE и последующей попытке запуска через этот jre высвечивается ошибка: Ошибка

Так же, если зайти попробовать открыть файл вручную, то вылазит следующее: 1

В свойствах файла следующее:

1

Разархивация происходит следующим способом и без ошибок:

try {
        ZipInputStream zipInputStream = new ZipInputStream(Files.newInputStream(Paths.get(zip)));
        ZipEntry entry = zipInputStream.getNextEntry();
        String[] name;
        unzipping = true;
        while (entry != null) {
            name = entry.getName().split("/");
            fileName = name[0];
            if (this.updateInformation) ManagerZip.updateInfo(baseController);
            File file = new File(pathToOut, entry.getName());
            if (entry.isDirectory()) file.mkdirs();
            else {
                File parent = file.getParentFile();

                if (!parent.exists()) parent.mkdirs();

                try (BufferedOutputStream bufferedOutputStream = new BufferedOutputStream(Files.newOutputStream(file.toPath()))) {
                    int bufferSize = Math.toIntExact(entry.getSize());
                    byte[] buffer = new byte[bufferSize > 0 ? bufferSize : 1];
                    int location;
                    while ((location = zipInputStream.read(buffer)) != -1) {
                        bufferedOutputStream.write(buffer, 0, location);
                        if (this.updateInformation) ManagerZip.updateInfo(baseController);
                    }
                }
            }
            entry = zipInputStream.getNextEntry();
        }

        zipInputStream.closeEntry();
        zipInputStream.close();
        File file = new File(zip);
        file.delete();
        unzipping = false;
    }catch (Exception e){
        System.err.println("UNZIP ERROR: \n");
        e.printStackTrace();
        ManagerWindow.currentController.setInfoText(e.getMessage());
    }

Попытка запуска программы происходит так:

new Thread(() -> {
        try {
            System.err.printf("================STARTUP[%s]SETTINGS================\n%s%n", this.version, Settings.show());
            Runtime runtime = Runtime.getRuntime();
            Process p1;

            String start = getStartString();
            System.err.printf("================STARTUP[%s]STRING================\n%s%n", this.version, start);
            p1 = runtime.exec(start); //start - большая строка запуска, если она нужна, то скину в комментарии

            InputStream is = p1.getInputStream();
            
            ManagerFlags.gameIsStart = true;
            ManagerWindow.currentController.setInfoText("Игра запущена");
            int i;
            while ((i = is.read()) != -1) {
                System.out.print((char) i);
            }
            p1.waitFor();
            ManagerFlags.gameIsStart = false;
            Platform.runLater(() -> playController.PlayButtonEnabled(true));

        } catch (Exception ex) {
            ManagerWindow.currentController.setInfoText(ex.getMessage());
            ex.printStackTrace();
        }
    }).start();

Даже если выдать вручную права всей папке(следовательно и всем файлам в ней), то ошибка будет та же.

Из-за чего это может быть? Как решить?

Ответы

Ответов пока нет.