Ich möchte eine Batch-Datei von einem Java-Programm ausführen.
Ich verwende den folgenden Befehl.
%Vor%Aber das Problem ist, dass ich einen reativen Pfad anstelle des absoluten Pfades angeben möchte, damit ich dieses Java-Projekt auf einer beliebigen Komp. bereitstellen kann.
Die Verzeichnisstruktur des Projekts sieht folgendermaßen aus:
%Vor%Ich möchte die Datei "Server.bat" im Verzeichnis "util" aus der Datei "Main.java" im Verzeichnis "parser" ausführen.
Wenn Java ausgeführt wird und Sie Runtime.exec () mit einem relativen Pfad verwenden, bedeutet relativ relativ zum aktuellen Benutzerverzeichnis, in dem die JVM aufgerufen wurde.
Dies funktioniert möglicherweise
%Vor%wenn Sie Java aus dem übergeordneten Verzeichnis von com starten.
Oder Sie müssen einen absoluten Pfad berechnen:
%Vor%Ich vergesse, lies wenn Runtime.exec () gewonnen hat 't .
Sie können dazu ProcessBuilder
verwenden. Es bietet viel mehr Kontrolle als exec
. Insbesondere kann das Arbeitsverzeichnis mit der Methode directory
festgelegt werden.
Beispiel:
%Vor%Natürlich muss Ihre App deployDir von irgendwo erhalten. Es kann in der Umgebung eingestellt werden, in der Anwendungskonfigurationsdatei kann es das aktuelle Benutzerverzeichnis oder irgendetwas anderes sein.
Sie können es mit Desktop versuchen, wenn es unterstützt wird (Java 1.6)
%Vor%Plexus utils stellt einen Kommandozeilen-Typ zur Verfügung, der einen aufrufen kann beliebige Befehlszeile und handle Parsing der Ausgabe.
%Vor%Am besten ist es, das Installationsverzeichnis der Anwendung auf dem System zu speichern und dann die Pfade innerhalb der Anwendung zu erstellen. System.getProperty ("user.dir") sollte auf Windows- und Unix-Plattformen funktionieren, um das aktuelle Arbeitsverzeichnis zu erhalten, aber es ist systemabhängig, beachten Sie das.
Der zweite Parameter für exec ist ein String [] mit Argumenten für die Umgebungseinstellungen (null bedeutet, dass er die aktuellen Prozesse des Prozesses erbt) und der dritte Parameter für exec sollte eine Datei sein, die das Arbeitsverzeichnis liefert. Versuchen Sie Folgendes:
%Vor%Tags und Links java batch-file