Commande Java Runtime.getRuntime().exec() dans Mac OS

Im à l'aide de Mac OS Lion, avec la version java 1.6.0_26

Je suis en train de faire une petite application pour Mac en Java avec un menu principal pour l'utilisateur, alors il peut choisir plusieurs options.

L'un d'eux est d'installer une application à l'aide d'un .pkg

Tout fonctionnait bien, avec ces commandes:

File instFolder = new File(System.getProperty("user.dir") + "/foldername/appInstaller.pkg");
String s = "open "+ instFolder.toString();
Process p = Runtime.getRuntime().exec(s);

Puis j'ai réalisé qu'il ya un problème quand foldername a des espaces ou si je copie ce fichier java avec des sous-dossiers pour une clé USB avec "NO NAME" (ou quelque nom avec des espaces).

En raison de la volonté de devenir quelque chose comme:

ouvrir /Volumes/NO NOM/nomdossier/appInstaller.pkg

ou

ouvrir /Utilisateurs/user1/Bureau/nom du dossier/appInstaller.pkg

Ainsi, lorsque vous exécutez le p processus, la commande va finir où le premier espace apparaît sur le chemin

ouvrir /Volumes/NO

ou

ouvrir /Utilisateurs/user1/Desktop/dossier


Pour essayer de résoudre ce problème, j'ai changé la définition de quelque chose comme ceci:

String s = "open "+ "\"" + instFolder.toString() + "\"";

Il a cessé de travailler bien. La chose étrange est que si je copie la valeur s (après la création de la variable s) et le coller dans le terminal, ça fonctionne:

ouvrir "/Users/user1/Bureau/nom du dossier/appInstaller.pkg"


mais l'exécution de Java il ne fonctionne pas.

Pourriez-vous m'aider, s'il vous plaît?

Grâce.

InformationsquelleAutor user897013 | 2011-11-02