Je souhaite lancer un navigateur et charger une page Web à l'aide de l'exécutable Runtime de Java. L'appel exact ressemble à ceci:Java Runtime Exec sous Windows échoue avec Unicode dans les arguments
String[] explorer = {"C:\\Program Files\\Internet Explorer\\IEXPLORE.EXE",
"-noframemerging",
"C:\\ ... path containing unicode chars ... \\Main.html"};
Runtime.getRuntime().exec(explorer);
Dans mon cas, le chemin contient "\u65E5\u672C\u8A9E"
, les caractères & # x65e5; & # x672c; & # x8a9e ;.
Apparemment, il est un bug java: http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4947220
Ma question est: est-il une solution viable qui peut être fait uniquement à l'aide de Java? Il semble qu'il est possible d'écrire une bibliothèque JNI pour cela, mais j'aimerais éviter cela si possible. J'ai essayé le codage URI du chemin en tant qu'ascii et en écrivant les commandes dans un fichier séquentiel, sans succès.
ProcessBuilder semble avoir le même problème avec unicode dans sa chaîne d'argument de commande. Je ne peux malheureusement pas apporter une bibliothèque extérieure pour mon cas particulier. – Bear
Que diriez-vous d'initialiser vos arguments aux variables en utilisant la méthode getPath() et les utiliser dans ProcessBuilder sans toucher à des trucs non-unicode dans le code source? – israkir
Apache Commons Exec utilise l'API Runtime.exec() en interne, vous aurez toujours le même problème qu'avant. – Renan