Die Versionshinweise für Java 8 Update 40 (8u40) :
Der Übersteuerungsmechanismus der unterstützten Standards und der Erweiterungsmechanismus sind veraltet und werden möglicherweise in einer zukünftigen Version entfernt. Es gibt keine Laufzeit ändert sich. Bestehende Anwendungen, die die "anerkannten Standards" verwenden Override- oder Extension-Mechanismen werden empfohlen, um zu migrieren von der Verwendung dieser Mechanismen.
Es gibt auch das Problem, dass Jigsaw (geplant für Java SE 9, AFAIK) durch einen modularen Ansatz ersetzt wird:
Ich verstehe, dass Oracle diese Mechanismen jetzt ablehnen möchte, weil sie sie in Java SE 9 nicht mehr unterstützen können.
Auf der anderen Seite ist es keine gute Vorgehensweise, etwas zu verwerfen, ohne eine Alternative anzubieten.
In den Versionshinweisen heißt es: "Vorhandene Anwendungen [...] werden empfohlen, die Verwendung dieser Mechanismen zu umgehen"
Wie können Sie also "wegwandern"
in Java SE 8?
Ich habe den folgenden Artikel gefunden, der erklärt, dass diese Mechanismen tatsächlich in Java SE 9 entfernt werden sollen:
Leider scheint es nicht viel zu geben, was Sie jetzt tun können, z. für Bibliotheken, die Teil der JRE sind.
Was tun, wenn Sie betroffen sind?
Obwohl die meisten Anwendungen nicht verwenden die befürworteten Normen oder Erweiterungsmechanismen, tun einige Anwendungen. Wenn Sie ein Entwickler sind, denken Sie daran, Abhängigkeiten als Teil bereitzustellen Ihrer Anwendung, anstatt ein externes System zu benötigen Konfigurationen. Wenn Sie nicht der Entwickler sind, kontaktieren Sie bitte die einzelner Softwareanbieter für Unterstützung.
Mit Java 8 können Sie den veralteten Mechanismus weiterhin verwenden. Oracle bietet nur eine Möglichkeit, zu überprüfen, ob Ihre Anwendung den Mechanismus mit diesem java.exe-Flag -XX:+CheckEndorsedAndExtDirs
[ 1 ] verfügbar in Java 8 Update 40 und höher.
Wenn Sie auf Java 9 aktualisieren, um zu vermeiden, dass Ihre Java-Anwendung zur Laufzeit abstürzt, mit NoClassDefFoundError, verursacht durch ClassNotFoundException wie
%Vor%Sie müssen Ihre java.exe Start-Befehlszeilen mit Argumenten wie aktualisieren --add-Module --Patch-Modul -add-exports
Ein konkretes Beispiel finden Sie im Beitrag von Grzegorz Grzybek vom September 2016 zum jacorb-developer mailing [ 2 ]. Wir mussten die Windows-Stapeldatei unserer Anwendung mit den zusätzlichen Java 9-Befehlszeilenargumenten wie
aktualisierenNun, es verbindet sich nicht mit Persistenz aber es stürzte nicht
%Vor%Ihr Fallback ist jetzt, Ihre Klassenpfad-Verzeichnisse und JAR-Dateien explizit aufzuführen, wenn Sie die Java-Instanz ausführen.