Wie kann ich einen zweiten Java-Prozess starten?

8

Wie kann ich eine zweite Java-Prozessplattform unabhängig starten? Idealerweise sollte es dieselbe Java-Version sein, die gerade ausgeführt wird. Gibt es hilfreiche Systemeigenschaften?

    
Horcrux7 12.12.2010, 12:36
quelle

3 Antworten

6

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:

  • IBM J9 verwendet j9 und j9w als ausführbare Namen.
  • BEA / Oracle JRockit hat andere -X und -XX Optionen.
  • Jikes RVM verwendet rvm als ausführbaren Namen und unterstützt nur eine Teilmenge von Sun java Optionen.
  • IKVM verwendet ikvm als ausführbaren Namen.

(Hinweis: Dies sind nur Beispiele, die in einer kursorischen Lektüre der jeweiligen Online-Dokumentation auffallen.)

    
Stephen C 12.12.2010, 13:39
quelle
10

Sie können die Systemeigenschaft java.home verwenden, um die aktuelle JVM zu finden:

%Vor%

und führen Sie es dann mit ProcessBuilder (oder Runtime.exec ).

Beachten Sie, dass für JDK java.home auf das in JDK enthaltene JRE-Verzeichnis zeigt.

    
khachik 12.12.2010 12:42
quelle
1

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.
  •   
    
Chris Ciesielski 12.12.2010 16:04
quelle

Tags und Links