Lorsque vous étudiez Java, vous souhaitez parfois utiliser une version différente en fonction du projet. Par exemple, j'aime la dernière inférence de type var java10 et ultérieure, mais je ne peux utiliser java8 que dans mon entreprise. Selon l'endroit où vous résidez, java4 Il y avait. Il y a des moments où vous devez étudier dans un vieil environnement. Au contraire, à partir de 2020, java10 peut difficilement être utilisé en entreprise ... Dans le cas de l'éclipse, il y a un écran pour spécifier jvm, mais c'est une expérience sur la façon de le spécifier réellement sur la ligne de commande.
J'ai une classe Main qui a été compilée avec java12 On suppose que la variable d'environnement JAVAHOME est définie sur le chemin d'accès à la JVM de java12. Dans cet état, placez la JVM de java8 JVM dans n'importe quel répertoire et entrez le répertoire contenant la commande java.
bash
java -version
Frappez la commande. Puis
java version "12.0.1" 2019-04-16
A été affiché. En d'autres termes, même dans le répertoire courant, la machine virtuelle Java qui passe par le chemin de classe du paramètre d'environnement JAVA HOME est en cours d'exécution.
Donc,
bash
./java -version
J'ai explicitement spécifié la commande java du répertoire actuel. Puis
java version "1.8.0_144"
Et la JVM du répertoire actuel a démarré. Donc, si vous faites de la commande java un chemin complet ou un chemin relatif, vous pouvez passer le chemin quel que soit l'endroit où vous placez la JVM?
J'ai donc essayé de taper la commande suivante dans la racine du projet avec la JVM placée directement sous la racine du projet
bash
./jdk1.8.0_144.jdk/Contents/Home/bin/java -cp ./bin Main
Puis
Exception in thread "main" java.lang.UnsupportedClassVersionError: Main has been compiled by a more recent version of the Java Runtime
J'ai eu cette erreur. On dit que cette classe Main ne peut pas être exécutée sur java8 car elle est construite sur java12. En d'autres termes, le basculement est réussi.
Recommended Posts