Tenho um programa em java que deve abrir um outro programa em java, porém passando um parametro pra esse programa:
Desktop d=Desktop.getDesktop();
try {
d.open(new File("C:/Unit/NFe/Atualy_NFe_Certo.jar BACKUP"));
} catch (IOException ex) {
Logger.getLogger(Testes.class.getName()).log(Level.SEVERE, null, ex);
}
Ele não identifica o BACKUP como parametro, e sim como parte do nome do arquivo.
Como faço pra passar esse parametro junto, usando a API desktop?
Eu poderia criar um atalho ou um .bat pra isso, mas ficaria deselegante.
Antes que alguem diga, não posso usar o Runtime.getRuntime().exec(""), tem que ser usando essa api desktop.
/Não existe “deselegante” em informática, apenas “certo” e “errado”. E no seu caso você terá de usar a solução que considera “deselegante”.
A API Desktop não permite passar parâmetros porque os sistemas operacionais que permitem abrir arquivos chamando apenas o nome do arquivo de dados associado (como .doc ou .jar) não aceitam parâmetros adicionais.
No caso do Windows, a API que é usada por Desktop.open é a ShellExecute ( http://msdn.microsoft.com/en-us/library/windows/desktop/bb762153(v=vs.85).aspx ) que não aceita parâmetros se for chamada com o nome de um arquivo de dados a ser aberto.
Ela aceita parâmetros apenas no caso de você passar um nome de executável, mas nesse caso é o Desktop.open que não consegue identificar que você quer passar um nome de executável e os parâmetros adequados. /
OK?