D'après ce que j'ai compris, les JRE de Java sont rétrocompatibles. Si vous écrivez un programme en Java (JDK) 7, il fonctionnera avec Java (JRE) 8.
J'ai quelques programmes que j'ai développés en Java 8, et j'ai des fichiers .jar et EXE que j'ai construits lorsque je les ai terminés, et ils ont toujours fonctionné correctement. Cependant, après avoir installé Java JDK 11 (11.0.2), ces anciens fichiers .jar se cassent...
- Quelques-uns d'entre eux fonctionnent toujours, mais leur interface graphique s'est agrandie, avec des boutons et des images plus grands qu'avant, et parfois flous.
- Un programme ne s'exécute pas du tout, essayer de l'exécuter dans une console donne une exception : " Exception dans le thread "AWT-EventQueue-0" java.lang.NoClassDefFoundError : javax/activation/ActivationDataFlavor "
J'ai cru comprendre que cette classe et d'autres classes javax ont été supprimées du JDK 11, de sorte que du point de vue du développement, vous ne pourriez plus les utiliser sans un outil tel que Maven. Mais je ne comprends pas pourquoi l'installation du JDK 11 a un quelconque effet sur mes anciens pots, puisque je n'ai pas installé de nouveau JRE, et même s'il y en avait un, il devrait être rétrocompatible ?
Pour ajouter à cela, j'utilise Apache NetBeans 10, il fonctionnait bien avec Java 8, mais après avoir installé JDK 11, NetBeans 10 fonctionnait toujours mais sa fenêtre de chargement était grande et floue, et les images de l'IDE sont floues, et tout le texte est plus grand.
Alors pourquoi l'installation du JDK 11 a ces effets négatifs sur les anciens programmes ?
Note - J'ai essayé d'associer les jars/EXEs avec javaw.exe de JRE version 8 (201), cependant, ils ont toujours les mêmes problèmes.