Fehler bei der Verwendung von Runtime.getRuntime (). Exec Methode eine exe aufzurufen, wenn exe Pfad nicht Englisch Zeichen

StackOverflow https://stackoverflow.com/questions/4105280

  •  29-09-2019
  •  | 
  •  

Frage

Ich bin mit Runtime.getRuntime.exec () Methode eine exe aufzurufen. Das Problem, was ich mit dieser Methode Gesicht ist, dass, wenn ich pass einige exe Pfad (c: \ JPN_char_folder \ mypath \ myexe.exe). Mit anderen Sprach Zeichen (ex.Japanese) „es sagt‚System nicht die Datei‘angegeben finden Would Sie bitte ein paar Ideen, diese zu umgehen vorschlagen? ich nach der Umstellung auf UTF-8 als auch, dass die exe Pfad sogar versucht, vorbei, aber dennoch konnte ich diese nicht lösen.

-Robert.

War es hilfreich?

Lösung

Ich glaube nicht, dass japanische Zeichen das Problem sind; es ist die c:. Laufwerk

Sie müssen es auf diese Weise schreiben:

String path = "c:\\\JPN_char_folder\\mypath\\myexe.exe";

Sehen Sie, ob das hilft.

Andere Tipps

Wahrscheinlich haben Sie eine Codierung Problem irgendwo.

Es gibt mehrere Schritte, die hier, dass der Pfad Wert annimmt:

  • InstallAnywhere ruft den Pfad
  • InstallAnywhere legt es in eine Variable
  • Java liest die Variable
  • Java setzt es in einen String
  • Java erstellt eine java.io.File Instanz von String
  • Java Runtime geht Pfad (über Datei) auf OS

somehwere entlang dieser Sequenz etwas schief geht mit dem Pfad: -. (

Es ist schwer zu sagen, wo; Ihre beste Wette wahrscheinlich ist, zu versuchen und den Wert bei jedem Schritt auf dem Weg ausdrucken, um zu sehen, wo es schief geht.

Mindestens von innen Java, sollten Sie den String auszudrucken sowohl als Text und als eine Liste von Unicode-Codepunkten (mit String.codePointAt). Auf diese Weise können die realen Daten Java Anwendungen sehen können.

Ein weiterer Ansatz:

  • Drucken Sie den Wert Java von InstallAnywhere (als Text & als Codepunkte, wie oben) wird
  • Versuchen Sie, den Weg in die Java-Programm als Stringliteral zu setzen, und Geige, bis Sie die Datei öffnen können auf diese Weise. Dann drucken Sie, dass String auch.

Nun können Sie die beiden Ergebnisse vergleichen; dass Sie sollten eine Idee geben, wo der Weg messed aufsteht. Hinweis:

Ist der Pfad Zeichen außerhalb der Basic Multilingual Plane (BMP)? Java behandelt diese ein bisschen ungeschickt, so dass Sie zusätzliche Aufmerksamkeit zahlen müssen. Vielleicht können Sie diese zuerst überprüfen.

Auch wenn Sie mit Windows arbeiten, können Sie Schrägstriche verwenden, wenn Verzeichnisse angeben. Dadurch werden Sie mit Flucht Backslash Hölle helfen.

Zum Beispiel auf meinem System, 7z im Verzeichnis c:\Program Files\7-Zip\ befindet.

Die Ausführung dieses

File file = new File("c:/Program Files/7-Zip/7z.exe");

if(file.exists()) {
    System.out.println(file.getAbsolutePath());
}

Ergebnisse in

c:\Program Files\7-Zip\7z.exe

auf der Konsole gedruckt wird.

Ich würde vorschlagen, Sie versuchen, dieses Idiom verwenden, das heißt ob Exe-Datei Ausfahrten, bevor Sie versuchen, sie auszuführen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top