Kann ich mehr als eine JVM auf meinem PC ausführen?

7

Kann ich mehr als eine JVM ausführen? Wenn ja, wie kann ich herausfinden, auf welcher JVM eine bestimmte Klasse geladen ist?

    
giri 31.12.2009, 18:25
quelle

7 Antworten

12

Es ist nicht ganz klar, was du meinst, aber:

  • Sie können mehr als eine VM (Version / Marke usw.) auf demselben Computer installieren
  • Sie können mehr als einen java -Prozess ausführen, unabhängig davon, ob es sich um die gleiche JVM-Version oder um andere
  • -Projekte handelt

Wenn Sie nicht gerade einen Debugging-Agenten oder ähnliches ausführen, kann ich keinen JVM-Prozess fragen, ob er eine bestimmte Klasse geladen hat. Es scheint ein bisschen eine seltsame Anforderung - warum willst du das tun?

    
Jon Skeet 31.12.2009, 18:27
quelle
6

Ja, Sie können mehrere JVMs auf einem einzelnen Computer ausführen.

Sun packt die Tools zum Ausführen von jvm auf verschiedene Arten. Normalerweise haben Sie entweder ein Java Development Kit (jdk) oder eine Java Standard Edition (jse) als Standard installiert. Diese Pakete enthalten ein Programm java , das aufgerufen wird, um ein jvm zu starten. Zusätzlich enthält der jdk einige zusätzliche Befehle (wie javac ) für Entwickler.

Sie können mehrere jdk's und / oder jse's auf einem einzigen Computer verfügbar haben. Unter Windows werden jdk und jse Pakete normalerweise unter Program Files/java installiert (das ist aus dem Speicher, da ich im Moment keinen PC zur Hand habe)

Unter Mac schauen Sie unter /System/Library/Frameworks/JavaVM.framework/Versions.

Unter Linux würde ich den Befehl which java verwenden, um zu bestimmen, wo der Standardbefehl java installiert ist (normalerweise / usr / bin). Dann führe ls -al | grep java (zB in / usr / bin) aus und notiere, wo die Symlinks zeigen, um herauszufinden, wo andere Versionen installiert sein könnten.

Sobald Sie herausgefunden haben, wo sich die verschiedenen jdk's und jse's auf Ihrem System befinden, können Sie herausfinden, welche Version von java zum Starten der einzelnen Programme verwendet wird.

Jedes Java-Programm startet mit dem Standard-jvm. Öffnen Sie ein Befehlsfenster oder Terminal und versuchen Sie java -version , um festzustellen, welche Version der aktuelle Standard ist.

Anstatt die Standard-Java-Version zu verwenden, können Programme auch gestartet werden, um eine bestimmte Java-Version zu verwenden. Zum Beispiel erstelle ich manchmal eine benutzerdefinierte Windows-Verknüpfung, um Eclipse mit einer bestimmten Version von jdk zu öffnen.

Ab java 5 gibt es ein Tool mit dem Namen jconsole , das Ihnen bei der Entscheidung helfen kann Programme laufen in welchen Versionen von jvms. Öffnen Sie einfach eine Konsole, und geben Sie jconsole ein, und Sie sollten eine nette GUI erhalten, die alle Programme anzeigt, die im Standard-jvm laufen. Ich denke, Sie könnten sogar Programme Klassenpfade überprüfen.

Hoffe das hilft, viel Glück!

    
Upgradingdave 31.12.2009 19:29
quelle
4

Sie können so viele JVMs ausführen, wie Sie auf Ihrer Festplatte und im Speicher speichern können:)

Wenn Sie eine Java-Anwendung starten, starten Sie zuerst die JVM und teilen Sie ihr dann mit, welche Anwendung ausgeführt werden soll. Die Antwort auf "welche JVM" lautet einfach: Die JVM, mit der Sie die Anwendung geladen haben!

Es ist möglich, ein wenig esoterisches Fiedeln mit Classloadern zu machen, was eine Ausnahme von dem darstellen würde, was ich gerade gesagt habe. Aber es stimmt im allgemeinen Fall und in der Mehrzahl aller Anwendungen.

    
Carl Smotricz 31.12.2009 18:27
quelle
3
  

Kann ich mehr als eine JVM ausführen?

Ja - führen Sie einfach den 'Java' Prozess

aus
  

Wenn ja, wie kann ich ein finden?   Eine bestimmte Klasse wird geladen   JVM?

Das Programm 'jps', das mit dem JAVA SDK verteilt wird, listet alle Java-Prozesse (JVMs) auf, die auf Ihrem Rechner liegen, die Hauptklasse, die von jeder JVM und dem Klassenpfad ausgeführt wird. Sie müssen sehen, welche Gläser oder Klassen in jedem Klassenpfad sind, um herauszufinden, ob eine Klasse geladen ist oder nicht.

versuche,

auszuführen %Vor%

und sehen, was Sie bekommen

    
emeraldjava 31.12.2009 18:50
quelle
1

Ja, Sie können mehrere jvm auf Ihrem PC installieren, da OS eine Instanz von jvm (nicht ganz jvm) im RAM lädt. Wir können verschiedene jvm wie JDK 1.4 oder JDK 1.6 aufrufen, indem wir den Pfad festlegen.

    
kamal nayan 02.08.2011 11:08
quelle
0

Mehrere JRE (Java Runtime Environment) ist sehr gut möglich. Ich tue es. Die Sache ist, dass JVM nicht immer auf Ihrem System läuft. Es ist wie jede andere Software. Wenn Sie eine JAR-Datei ausführen, wird sie ausgeführt.

Die Standard-JRE wird in Umgebungsvariablen als JAVA_HOME (rechter Mausklick auf meinen Computer - & gt; -Eigenschaften - & gt; Registerkarte Erweitert - & gt; Umgebungsvariablen)

festgelegt

Um eine JAR-Datei auszuführen, führen Sie einfach diesen Befehl aus:

  

C: \ Programm   Dateien \ Java \ j2re1.4.2_04 \ bin \ javaw.exe "   -jar Myfile.jar

Sie können jedes andere jre javaw verwenden, um eine jar-Datei auszuführen.

Bitte beachten Sie, dass j2re1.4.2_04 möglicherweise nicht Ihre jre-Version ist.

Bearbeiten:

Alle Klassen in einer JAR-Datei werden auf einer einzelnen JVM ausgeführt. Wie du dir denken kannst. Sehen Sie Ihren JAVA_HOME, es ist der Standard.

    
JCasso 31.12.2009 18:38
quelle
0

Sie können beliebig viele JVM auf demselben Computer ausführen. Sie müssen nur einige CommandPrompt-Fenster öffnen und über java oder javaw application ausführen, was Sie wollen. Die Klasse, die jede der JVM ausführt, ist die Klasse THAT, die die Methode main() enthält. Main () -Methode ist die erste Sache, die beim Start einer Java-App ausgeführt wird. Natürlich befindet sich main () in einigen Ihrer Klassen. Das ist alles.

    
nrg 22.04.2013 13:17
quelle

Tags und Links