Es ist im Allgemeinen nicht möglich.
Das in @ khachiks Antwort bereitgestellte Rezept funktioniert nicht unbedingt für eine Sun-Implementierung von Java.
Die ausführbare Java-Datei heißt nicht unbedingt java
und befindet sich nicht notwendigerweise im Unterverzeichnis bin
. Auch unter Sun Java gibt es unter Windows zwei ausführbare Dateien. java
und javaw
.
Die Befehlsoptionen für den Befehl zum Starten einer JVM sind für verschiedene Java-Implementierungen unterschiedlich. Daher kann der Schritt ProcessBuilder
nicht portable Argumente beinhalten.
Während die meisten JVMs die primären Befehlsoptionen Sun java
übernommen haben, gibt es zahlreiche Unterschiede. Zum Beispiel:
j9
und j9w
als ausführbare Namen. -X
und -XX
Optionen. rvm
als ausführbaren Namen und unterstützt nur eine Teilmenge von Sun java
Optionen. ikvm
als ausführbaren Namen. (Hinweis: Dies sind nur Beispiele, die in einer kursorischen Lektüre der jeweiligen Online-Dokumentation auffallen.)
Haben Sie versucht, die Apache Commons-Bibliotheken zu verwenden? Wenn Sie das Launcher-Projekt nicht ausprobieren, versuchen Sie es. Es war ziemlich nützlich für mich vor einiger Zeit.
Hier ist die Projektbeschreibung von ihrer Seite:
Die Launcher-Komponente ist als plattformübergreifender Java-Anwendungs-Launcher konzipiert.
Die ursprünglichen Java-Klassen stammen aus dem Tomcat 4.0-Projekt.
Commons-Launcher macht das Starten von Java-Klassen durch ein Batch- oder Shell-Skript überflüssig. Einige Situationen, in denen die Eliminierung eines Batch- oder Shell-Skripts wünschenswert sein kann, sind:
- Sie wollen vermeiden, bestimmen zu müssen, wo bestimmte Anwendungspfade z.B. B. das Home-Verzeichnis Ihrer Anwendung usw. Das dynamische Bestimmen in einem Windows-Batch-Skript ist bei einigen Windows-Versionen oder bei Verwendung von Softlinks auf Unix-Plattformen sehr schwierig.
- Sie möchten vermeiden, dass Sie mit systemeigenen Datei- und Pfadtrennzeichen oder Problemen mit systemeigenen Pfadangaben umgehen müssen.
- Sie müssen bestimmte Systemeigenschaften erzwingen, z. java.endorsed.dirs beim Ausführen mit JDK 1.4.
- Sie möchten, dass Benutzer benutzerdefinierte JVM-Argumente oder Systemeigenschaften übergeben können, ohne Argumente in Ihrem Skript analysieren und neu anordnen zu müssen. Dies kann in Batch- und Shell-Skripten schwierig und / oder unordentlich sein. Sie möchten die Systemeigenschaften von einer Konfigurationsdatei aus starten, statt sie in Ihren Batch- und Shell-Skripten hart zu codieren.
- Sie möchten lokalisierte Fehlermeldungen bereitstellen, was in Batch- und Shell-Skripten sehr schwierig ist.
Tags und Links java process runtime.exec