2017-03-06 1 views
0

Ich bin nicht sicher, ob dies möglich ist, wollte ich eine Windows-exe-Anwendung von der Kommandozeile aus meinem Java-Programm laufen zu lassen - so etwas wieRun exe von Java auf Linux

Process process = Runtime.getRunTime().exec("myapp.exe --params"); 

Der Haken ist, dass ich würde Ich möchte die Java-Anwendung ausführen, die die EXE innerhalb einer OS X- oder Linux-Umgebung aufruft.

Ich fragte mich, ob jemand das getan hat oder irgendwelche Vorschläge, wie es getan werden könnte? Danke

Edit: danke für die Antwort. Ich wollte hinzufügen, dass ich wahrscheinlich nicht Wein zum Ausführen der Exe verwenden und würde wahrscheinlich eine Art Wrapper um die EXE-Datei erstellen möchten, um Funktionen aus der DLL direkt aus Java aufrufen. Ich habe das vorher noch nicht gemacht und mich gefragt, ob es irgendwelche Hinweise darauf gibt.

+1

Ich glaube nicht, dass der Code, wie es ist, funktioniert. Sie können versuchen, Java [Wine] (https://wiki.winehq.org/Main_Page) starten zu lassen, welches wiederum die .exe startet. – Pimich

+1

versuchen, wein anwendung übergabe myapp.exe als parameter zu wein –

+1

Das scheint nicht eine sehr gute design wahl. Um Windows-Exe in Linux ausführen zu können, muss mindestens Wine installiert sein. Ihre Anwendung wäre dann abhängig von der Verfügbarkeit einiger anderer Anwendungen von Drittanbietern, auf die Ihre Benutzer möglicherweise keinen Zugriff haben. – scrappedcola

Antwort

7

exe Dateien haben ein spezifisches Windows-Format namens Portable Executable (PE). Es ist nicht kompatibel mit dem Format, das Linux für ausführbare Dateien verwendet, ganz zu schweigen von Unterschieden bei Systemaufrufen zwischen den beiden Systemen.

Sie können nicht einfach eine exe Datei unter Linux ausführen, unabhängig davon, ob sie von Java ausgeführt wird.

Wenn Sie es wirklich brauchen zu arbeiten, haben Sie zwei Möglichkeiten:

  • für Linux eine Windows-Kompatibilitätsschicht Verwendung in Form von WINE (oder ähnlichen Werkzeugen)
  • Ihre exe für Linux Recompile