Java executa processo no linux

Eu tenho lutado por um tempo agora com este problema e não consigo consertar isso. Eu já tentei diferentes abordagens (Runtime.exec (), ProcessBuiler), mas nenhum parece funcionar.

Esse é o meu problema. Eu tenho um laptop que está sempre ligado. Este laptop roda uma ferramenta java conectada a um arduino via usb para ligar e desligar as luzes da casa. Eu criei este programa eu mesmo, portanto, eu também estou fazendo algum trabalho de manutenção regular sobre ele. Recentemente eu adicionei um botão para reiniciar o programa da minha interface html (no caso de eu ter uma atualização, ou se por algum outro motivo eu talvez precise reiniciar o programa ou eu decidir implementar a atualização automática em um futuro próximo).

Essa idéia por trás disso é iniciar uma segunda instância do aplicativo a partir da primeira instância e, em seguida, System.exit (0) a primeira instância.

Por algum motivo, não consigo iniciar uma segunda instância do aplicativo. Aqui está algum código.

public void shutdown(boolean restart) {
        if (this.serial != null) {
            this.serial.disconnect();
        }

        if (restart) {
            System.out.println(this.getClass().getProtectionDomain().getCodeSource().getLocation().getPath());
            String startupCommand = "java -jar \"" + this.getClass().getProtectionDomain().getCodeSource().getLocation().getPath().replace("%20", " ") + "\"";
            ProcessBuilder builder = new ProcessBuilder();

//            String[] command = new String[1];
//            command[0] = "-jar \"" + (System.getProperty("user.dir") + "/Home_Automation_Executor.jar") + "\"";
            try {
//                //System.out.println("Restarting Home Automation with command: " + command[0]);
//                System.out.println("Restarting Home Automation with command: " + startupCommand);
//                Runtime.getRuntime().exec("bash");
//                Process proc = Runtime.getRuntime().exec(startupCommand);
                Process proc = builder.command(startupCommand).start();
                InputStream stderr = proc.getErrorStream();
                InputStreamReader isr = new InputStreamReader(stderr);
                BufferedReader br = new BufferedReader(isr);
                String line = null;
                System.out.println("<ERROR>");
                while ((line = br.readLine()) != null) {
                    System.out.println(line);
                }
                System.out.println("</ERROR>");
                int exitVal = 0;
                try {
                    exitVal = proc.waitFor();
                } catch (InterruptedException ex) {
                    Logger.getLogger(Engine.class.getName()).log(Level.SEVERE, null, ex);
                }
                System.out.println("Process exitValue: " + exitVal);
            } catch (IOException ex) {
                ex.printStackTrace();
            }
        }
        System.out.println("Terminating Home Automation");
        System.exit(0);
    }

java.io.IOException: Não é possível executar o programa "java -jar" / Usuários / NightWalker / Dropbox / Desenvolvimento / Código-fonte / Java / Ferramentas NightWare / Automação residencial / Executor de Automação residencial / dist / Home_Automation_Executor.jar "": error = 2, Nenhum tal arquivo ou diretório em java.lang.ProcessBuilder.start (ProcessBuilder.java:460) em home.automation.executor.Engine.shutdown (Engine.java:186) em home.automation.executor.webserver.HTTPGenerator._handleActionCommand ( HTTPGenerator.java:190) em home.automation.executor.webserver.HTTPGenerator._generateHTTPPage (HTTPGenerator.java:165) em home.automation.executor.webserver.HTTPGenerator.getHTTPPage (HTTPGenerator.java:58) at home.automation.executor .webserver.HTTPRequestHandler.run (HTTPRequestHandler.java:160) Causado por: java.io.IOException: error = 2, Nenhum arquivo ou diretório desse tipo em java.lang.UNIXProcess.forkAndExec (Native Method) em java.lang.UNIXProcess. (UNIXProcess.java:53) em java.lang.ProcessImpl.start (ProcessImpl.java:91) em java.lang.ProcessBuilder.start (ProcessBuilder.java:453 ) ... mais 5

questionAnswers(2)

yourAnswerToTheQuestion