Como inicio um processo completamente independente de um programa Java?

Estou trabalhando em um programa escrito em Java que,para algumas ações, lança programas externos usando linhas de comando configuradas pelo usuário. Atualmente, ele usaRuntime.exec() e não retém oProcess reference (os programas lançados são um editor de texto ou um utilitário de arquivamento, portanto, não há necessidade de o sistema in / out / err córregos

orém, existe um pequeno problema com isso, pois quando o programa Java é encerrado, ele não é encerrado até que todos os programas iniciados sejam encerrado

Eu preferiria muito que os programas lançados fossem completamente independentes da JVM que os lanço

O sistema operacional de destino é múltiplo, com Windows, Linux e Mac sendo o mínimo, mas qualquer sistema GUI com uma JVM é realmente o que é desejado (daí a configurabilidade do usuário das linhas de comando reais

lguém sabe como executar o programa iniciado de forma completamente independente da JV

Editar em resposta a um comentário

O código de inicialização é o seguinte. O código pode iniciar um editor posicionado em uma linha e coluna específica ou iniciar um visualizador de arquivamento. Os valores citados na linha de comando configurada são tratados como codificados em ECMA-262, decodificados e as aspas removidas para formar o parâmetro exec desejad

O lançamento ocorre no EDT.

static Throwable launch(String cmd, File fil, int lin, int col) throws Throwable {
    String frs[][]={
        { "$FILE$"  ,fil.getAbsolutePath().replace('\\','/') },
        { "$LINE$"  ,(lin>0 ? Integer.toString(lin) : "") },
        { "$COLUMN$",(col>0 ? Integer.toString(col) : "") },
        };
    String[] arr; // array of parsed tokens (exec(cmd) does not handle quoted values)

    cmd=TextUtil.replace(cmd,frs,true,"$","$");
    arr=(String[])ArrayUtil.removeNulls(TextUtil.stringComponents(cmd,' ',-1,true,true,true));
    for(int xa=0; xa<arr.length; xa++) {
        if(TextUtil.isQuoted(arr[xa],true)) {
            arr[xa]=TextDecode.ecma262(TextUtil.stripQuotes(arr[xa]));
            }
        }
    log.println("Launching: "+cmd);
    Runtime.getRuntime().exec(arr);
    return null;
    }

Isso parece acontecer apenas quando o programa é iniciado a partir do meu IDE. Estou encerrando esta questão, pois o problema existe apenas no meu ambiente de desenvolvimento; não é um problema na produção. No programa de teste em uma das respostas, e em outros testes realizados, estou convencido de que não é um problema que será visto por qualquer usuário do programa em qualquer plataforma.

questionAnswers(14)

yourAnswerToTheQuestion