Methoden JNA Execute an executable

Basti4231

Bekanntes Mitglied
Hey Leute,

ich arbeite mit der aktuellsten Version von JNA.

Hätte gerne gewusst, ob jemand eine Möglichkeit kennt, eine .exe Datei über JNA auszuführen. Bisher habe ich noch nichts dazu gefunden.

Eigentlich würde ich sie ja über
Java:
Runtime.getRuntime().execute()
ausführen, aber bei dieser .exe-Datei taucht im Programm selbst dann ein Fehler auf, wenn ich es auf diese Weise ausführe.
Habe den Quellcode von dem Programm leider nicht und weiß nicht, wieso der Fehler auftritt, nur dass er über diesen Weg auftritt und das Programm somit mir nicht nützen kann.

Daher suche ich einen Weg, die Datei doch auszuführen.

Hat jemand Anregungen für mich?


Gruß Basti :)
 

KuhTee

Aktives Mitglied
Was heisst denn "taucht ein Fehler auf"? Gehts etwas genauer? Kannst du die exe zB aus der Konsole heraus starten? Wenn ja, dann könnte ich mir fehlende Abhängigkeiten (sprich DLLs) als Problem vorstellen. Dann muss evtl das Arbeitsverzeichnis für die Anwendung geändert werden.

Mit JNA wirst du da übrigens nicht weiterkommen, komplett andere Baustelle.
 

Basti4231

Bekanntes Mitglied
Ja also der Fehler ist ne unhandled Exception sagt das Programm -.- Windows selber sagt als detaillierten Fehler, warum die .exe nicht mehr funktioniert folgendes:
Code:
Problemsignatur:
  Problemereignisname:	CLR20r3
  Problemsignatur 01:	seacrusher.exe
  Problemsignatur 02:	1.0.0.0
  Problemsignatur 03:	504114a7
  Problemsignatur 04:	System.Drawing
  Problemsignatur 05:	2.0.0.0
  Problemsignatur 06:	4f9267f5
  Problemsignatur 07:	144
  Problemsignatur 08:	3d
  Problemsignatur 09:	System.IO.FileNotFoundException
  Betriebsystemversion:	6.1.7601.2.1.0.256.1
  Gebietsschema-ID:	1031

Also das Programm selbst startet sich schon. Es öffnet sich auch dann ein Fenster, wo ich dann nen Button klicke, um das Teil zu starten. Aber danach dann gibts eben diese Unhandled Exception und das Programm schließt sich. Der Fehler taucht nur auf, wenn ich es über diese Weise starte. Per Doppelklick oder Enter nach Markierung kommt er nicht.

Habe auch schon ma die Orte gewechselt von der .exe Datei, aber gleiches Ergebnis.



@EDIT: AH, über die Konsole kann ich das Programm starten, bzw. den Button korrekt ausführen, nach Start des Programms.
 
Zuletzt bearbeitet:

TKausL

Top Contributor
Here is an example that starts a process with a modified working directory and environment:

Java:
 ProcessBuilder pb = new ProcessBuilder("myCommand", "myArg1", "myArg2");
 Map<String, String> env = pb.environment();
 env.put("VAR1", "myValue");
 env.remove("OTHERVAR");
 env.put("VAR2", env.get("VAR1") + "suffix");
 pb.directory(new File("myDir"));
 Process p = pb.start();
Vieleicht kommst du damit weiter... [japi]ProcessBuilder[/japi]
 

Basti4231

Bekanntes Mitglied
Das is mal ne saubere Lösung. Den hab ich schon ganz vergessen den ProcessBuilder, eine schöne Klasse :)

Danke man, damit funktionierts. Muss gar nicht Umgebungsvariablen setzen, es reicht schon:

Java:
ProcessBuilder pb = new ProcessBuilder("cmd", "/c", "myFile.exe");
pb.directory(new File(path));
pb.start();
 

Ähnliche Java Themen

Neue Themen


Oben