Запустите jar при запуске Linux из Java

Я хочу запустить файл JAR при запуске. Так что я упоминал здесь. Я выполнил шаги вручную, как указано Сорока, то есть, используя автозапуск, и это работало без проблем. Но я попробовал то же самое в Java, т.е. от создания скрипта до копирования файла в /etc/xdg/autostart, Все файлы созданы безопасно и нет исключений или ошибок. Но мой файл jar не запускается при запуске.

Содержание скрипта следующее:

#!/bin/bash

### BEGIN INIT INFO
# Provides:          testscript.sh
# Required-Start:    $remote_fs $syslog
# Required-Stop:     $remote_fs $syslog
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: Start daemon at boot time
# Description:       Enable service provided by daemon.
### END INIT INFO

java -jar /home/user/Documents/Parthe/StartupTest/Start.jar

Содержимое файла.desktop выглядит следующим образом:

[Desktop Entry]
Name=test
Exec=/usr/bin/testscript.sh
Type=Application
Terminal=false

Ява-программа, которую я использовал для создания этих файлов, выглядит следующим образом:

private void writeScript() {
        File f = new File("/usr/bin/testscript.sh");
        if (!(f.exists())) {

            try {
                f.createNewFile();
                BufferedWriter bw = new BufferedWriter(new FileWriter(f, true));
                bw.write("#!/bin/bash");
                bw.newLine();
                bw.newLine();
                bw.append("### BEGIN INIT INFO");
                bw.newLine();
                bw.append("# Provides:          testScript");
                bw.newLine();
                bw.append("# Required-Start:    $remote_fs $syslog");
                bw.newLine();
                bw.append("# Required-Stop:     $remote_fs $syslog");
                bw.newLine();
                bw.append("# Default-Start:     2 3 4 5");
                bw.newLine();
                bw.append("# Default-Stop:      0 1 6");
                bw.newLine();
                bw.append("# Short-Description: Start daemon at boot time");
                bw.newLine();
                bw.append("# Description:       Enable service provided by daemon.");
                bw.newLine();
                bw.append("### END INIT INFO");
                bw.newLine();
                bw.newLine();
                bw.append("java -jar /home/user/Documents/Parthe/StartupTest/Start.jar");
                bw.newLine();
                bw.flush();
                bw.close();
            } catch (IOException ex) {
                Logger.getLogger(TestStartup.class.getName())
                        .log(Level.SEVERE, null, ex);
            }
        }
        writeDesktopFile();

    }

    private void writeDesktopFile() {

        JOptionPane.showMessageDialog(null, "inside Write Desktop");
        File f = new File("/usr/share/applications/test.desktop");
        if (!(f.exists())) {
            try {
                f.createNewFile();
                JOptionPane.showMessageDialog(null, "File created");
                BufferedWriter bw = new BufferedWriter(new FileWriter(f, true));
                bw.write("[Desktop Entry]");
                bw.newLine();
                bw.append("Name=test");
                bw.newLine();
                bw.append("Exec=/usr/bin/testscript.sh");
                bw.newLine();
                bw.append("Type=Application");
                bw.newLine();
                bw.append("Terminal=false");
                bw.flush();
                bw.close();
                moveFile();
            } catch (IOException ex) {
                Logger.getLogger(TestStartup.class.getName())
                        .log(Level.SEVERE, null, ex);
            }
        }
    }

    private void moveFile() {
        try {
            Process p = Runtime.getRuntime().exec("cp "
                    + "/usr/share/applications/test.desktop "
                    + "/etc/xdg/autostart/");
            Runtime.getRuntime().exec("chmod +x /usr/bin/testScript");
        } catch (IOException ex) {
            Logger.getLogger(TestStartup.class.getName())
                    .log(Level.SEVERE, null, ex);
        }
    }

Файл jar, который должен запускаться при запуске, содержит оператор печати и диалоговое окно с сообщением Joptionpane, оба из которых выводят "Success".

0 ответов

Другие вопросы по тегам