Résolu le 23-04-19 OpenJDK versus Oracle JDK : WARNINGS avec OpenJDK

Installation, configuration et utilisation des logiciels que vous souhaitez installer.
Répondre
Avatar du membre
Scrat
Messages : 644
Enregistré le : lun. 6 août 2018 19:05
Localisation : île d'Oléron

OpenJDK versus Oracle JDK : WARNINGS avec OpenJDK

Message par Scrat »

Bonjour.

Suite à cette discussion avec Cyrille, j'ai remplacé mon environnement Java Oracle JDK 8 par les versions OpenJDK 8 ou 11 disponibles dans les paquets, et j'ai testé Netbeans 8.2:

- premier essai avec OpenJDK-11: Netbeans démarre, mais j'ai un bouton de notification en rouge que je ne peux pas afficher, et la fenêtre des projets ne peut pas être affichée. :? Exit donc OpenJDK-11. Mais il est probable que Netbeans 8.2 ne puisse pas fonctionner correctement avec les versions Java supérieures à 8. Actuellement, Netbeans est en cours de transfert d'Oracle vers la Fondation Apache, et les versions Netbeans intermédiaires publiées par la fondation démarrent au numéro 9. Mais actuellement, seuls les modules Java sont transférés, pas les modules de programmation en Fortran, C, C++ que j'utilise. Donc, je reste avec Netbeans 8.2 et j'attends que le transfert vers la Fondation Apache soit complet pour faire une mise à jour de Netbeans.

- second essai avec OpenJDK-8: là, Netbeans 8.2 s'affiche correctement. Mes programmes semblent s'exécuter correctement aussi (apparence graphique correcte et sorties correctes), mais je récupère quand même un grand nombre de WARNINGS dont voici un échantillon:

Code : Tout sélectionner

(java:27047): GLib-GObject-WARNING **: 14:43:41.858: invalid cast from 'JawImpl_4098' to 'AtkText'

(java:27047): Atk-CRITICAL **: 14:43:41.858: atk_text_get_character_count: assertion 'ATK_IS_TEXT (text)' failed

(java:27047): GLib-GObject-WARNING **: 14:43:41.858: ../../../../gobject/gsignal.c:3492: signal name 'text_changed::delete' is invalid for instance '0x7f9f043f6110' of type 'JawImpl_4098'

(java:27047): GLib-GObject-WARNING **: 14:43:42.967: invalid cast from 'JawImpl_4098' to 'AtkText'

(java:27047): Atk-CRITICAL **: 14:43:42.968: atk_text_get_character_count: assertion 'ATK_IS_TEXT (text)' failed

(java:27047): GLib-GObject-WARNING **: 14:43:43.184: invalid cast from 'JawImpl_4098' to 'AtkText'

(java:27047): Atk-CRITICAL **: 14:43:43.184: atk_text_get_character_count: assertion 'ATK_IS_TEXT (text)' failed

(java:27047): GLib-GObject-WARNING **: 14:43:45.033: invalid cast from 'JawImpl_4098' to 'AtkText'

(java:27047): Atk-CRITICAL **: 14:43:45.033: atk_text_get_character_count: assertion 'ATK_IS_TEXT (text)' failed

(java:27047): GLib-GObject-WARNING **: 14:43:46.227: invalid cast from 'JawImpl_4098' to 'AtkText'

(java:27047): Atk-CRITICAL **: 14:43:46.227: atk_text_get_character_count: assertion 'ATK_IS_TEXT (text)' failed

(java:27047): GLib-GObject-WARNING **: 14:43:46.290: invalid cast from 'JawImpl_4098' to 'AtkText'

(java:27047): Atk-CRITICAL **: 14:43:46.290: atk_text_get_character_count: assertion 'ATK_IS_TEXT (text)' failed

(java:27047): GLib-GObject-WARNING **: 14:43:47.791: invalid cast from 'JawImpl_4098' to 'AtkText'

(java:27047): Atk-CRITICAL **: 14:43:47.791: atk_text_get_character_count: assertion 'ATK_IS_TEXT (text)' failed

(java:27047): GLib-GObject-WARNING **: 14:43:49.019: invalid cast from 'JawImpl_4098' to 'AtkText'

(java:27047): Atk-CRITICAL **: 14:43:49.019: atk_text_get_character_count: assertion 'ATK_IS_TEXT (text)' failed

(java:27047): GLib-GObject-WARNING **: 14:43:49.081: invalid cast from 'JawImpl_4098' to 'AtkText'

(java:27047): Atk-CRITICAL **: 14:43:49.081: atk_text_get_character_count: assertion 'ATK_IS_TEXT (text)' failed

(java:27047): GLib-GObject-WARNING **: 14:43:50.546: invalid cast from 'JawImpl_4098' to 'AtkText'

(java:27047): Atk-CRITICAL **: 14:43:50.546: atk_text_get_character_count: assertion 'ATK_IS_TEXT (text)' failed

(java:27047): GLib-GObject-WARNING **: 14:43:51.252: invalid cast from 'JawImpl_4098' to 'AtkText'

(java:27047): Atk-CRITICAL **: 14:43:51.252: atk_text_get_character_count: assertion 'ATK_IS_TEXT (text)' failed

(java:27047): GLib-GObject-WARNING **: 14:43:51.313: invalid cast from 'JawImpl_4098' to 'AtkText'

(java:27047): Atk-CRITICAL **: 14:43:51.313: atk_text_get_character_count: assertion 'ATK_IS_TEXT (text)' failed

(java:27047): GLib-GObject-WARNING **: 14:43:52.667: invalid cast from 'JawImpl_4098' to 'AtkText'

(java:27047): Atk-CRITICAL **: 14:43:52.667: atk_text_get_character_count: assertion 'ATK_IS_TEXT (text)' failed

(java:27047): GLib-GObject-WARNING **: 14:43:53.310: invalid cast from 'JawImpl_4098' to 'AtkText'

(java:27047): Atk-CRITICAL **: 14:43:53.310: atk_text_get_character_count: assertion 'ATK_IS_TEXT (text)' failed

(java:27047): GLib-GObject-WARNING **: 14:43:53.370: invalid cast from 'JawImpl_4098' to 'AtkText'

(java:27047): Atk-CRITICAL **: 14:43:53.370: atk_text_get_character_count: assertion 'ATK_IS_TEXT (text)' failed

(java:27047): GLib-GObject-WARNING **: 14:43:54.743: invalid cast from 'JawImpl_4098' to 'AtkText'

(java:27047): Atk-CRITICAL **: 14:43:54.743: atk_text_get_character_count: assertion 'ATK_IS_TEXT (text)' failed

(java:27047): GLib-GObject-WARNING **: 14:43:55.363: invalid cast from 'JawImpl_4098' to 'AtkText'

(java:27047): Atk-CRITICAL **: 14:43:55.363: atk_text_get_character_count: assertion 'ATK_IS_TEXT (text)' failed

(java:27047): GLib-GObject-WARNING **: 14:43:55.422: invalid cast from 'JawImpl_4098' to 'AtkText'

(java:27047): Atk-CRITICAL **: 14:43:55.422: atk_text_get_character_count: assertion 'ATK_IS_TEXT (text)' failed

(java:27047): GLib-GObject-WARNING **: 14:43:56.851: invalid cast from 'JawImpl_4098' to 'AtkText'

(java:27047): Atk-CRITICAL **: 14:43:56.852: atk_text_get_character_count: assertion 'ATK_IS_TEXT (text)' failed

(java:27047): GLib-GObject-WARNING **: 14:43:57.523: invalid cast from 'JawImpl_4098' to 'AtkText'

(java:27047): Atk-CRITICAL **: 14:43:57.523: atk_text_get_character_count: assertion 'ATK_IS_TEXT (text)' failed

(java:27047): GLib-GObject-WARNING **: 14:43:57.584: invalid cast from 'JawImpl_4098' to 'AtkText'

(java:27047): Atk-CRITICAL **: 14:43:57.584: atk_text_get_character_count: assertion 'ATK_IS_TEXT (text)' failed

(java:27047): GLib-GObject-WARNING **: 14:43:58.964: invalid cast from 'JawImpl_4098' to 'AtkText'

(java:27047): Atk-CRITICAL **: 14:43:58.964: atk_text_get_character_count: assertion 'ATK_IS_TEXT (text)' failed

(java:27047): GLib-GObject-WARNING **: 14:43:59.602: invalid cast from 'JawImpl_4098' to 'AtkText'

(java:27047): Atk-CRITICAL **: 14:43:59.602: atk_text_get_character_count: assertion 'ATK_IS_TEXT (text)' failed

(java:27047): GLib-GObject-WARNING **: 14:43:59.667: invalid cast from 'JawImpl_4098' to 'AtkText'

(java:27047): Atk-CRITICAL **: 14:43:59.667: atk_text_get_character_count: assertion 'ATK_IS_TEXT (text)' failed

(java:27047): GLib-GObject-WARNING **: 14:44:01.078: invalid cast from 'JawImpl_4098' to 'AtkText'

(java:27047): Atk-CRITICAL **: 14:44:01.078: atk_text_get_character_count: assertion 'ATK_IS_TEXT (text)' failed

(java:27047): GLib-GObject-WARNING **: 14:44:01.768: invalid cast from 'JawImpl_4098' to 'AtkText'

(java:27047): Atk-CRITICAL **: 14:44:01.768: atk_text_get_character_count: assertion 'ATK_IS_TEXT (text)' failed

(java:27047): GLib-GObject-WARNING **: 14:44:01.830: invalid cast from 'JawImpl_4098' to 'AtkText'

(java:27047): Atk-CRITICAL **: 14:44:01.830: atk_text_get_character_count: assertion 'ATK_IS_TEXT (text)' failed

(java:27047): GLib-GObject-WARNING **: 14:44:03.217: invalid cast from 'JawImpl_4098' to 'AtkText'

(java:27047): Atk-CRITICAL **: 14:44:03.217: atk_text_get_character_count: assertion 'ATK_IS_TEXT (text)' failed

(java:27047): GLib-GObject-WARNING **: 14:44:03.914: invalid cast from 'JawImpl_4098' to 'AtkText'

(java:27047): Atk-CRITICAL **: 14:44:03.914: atk_text_get_character_count: assertion 'ATK_IS_TEXT (text)' failed

(java:27047): GLib-GObject-WARNING **: 14:44:03.975: invalid cast from 'JawImpl_4098' to 'AtkText'

(java:27047): Atk-CRITICAL **: 14:44:03.975: atk_text_get_character_count: assertion 'ATK_IS_TEXT (text)' failed

(java:27047): GLib-GObject-WARNING **: 14:44:05.319: invalid cast from 'JawImpl_4098' to 'AtkText'

(java:27047): Atk-CRITICAL **: 14:44:05.319: atk_text_get_character_count: assertion 'ATK_IS_TEXT (text)' failed

(java:27047): GLib-GObject-WARNING **: 14:44:05.979: invalid cast from 'JawImpl_4098' to 'AtkText'

(java:27047): Atk-CRITICAL **: 14:44:05.979: atk_text_get_character_count: assertion 'ATK_IS_TEXT (text)' failed

(java:27047): GLib-GObject-WARNING **: 14:44:06.041: invalid cast from 'JawImpl_4098' to 'AtkText'

(java:27047): Atk-CRITICAL **: 14:44:06.042: atk_text_get_character_count: assertion 'ATK_IS_TEXT (text)' failed

(java:27047): GLib-GObject-WARNING **: 14:44:07.406: invalid cast from 'JawImpl_4098' to 'AtkText'

(java:27047): Atk-CRITICAL **: 14:44:07.406: atk_text_get_character_count: assertion 'ATK_IS_TEXT (text)' failed

(java:27047): GLib-GObject-WARNING **: 14:44:08.026: invalid cast from 'JawImpl_4098' to 'AtkText'

(java:27047): Atk-CRITICAL **: 14:44:08.026: atk_text_get_character_count: assertion 'ATK_IS_TEXT (text)' failed

(java:27047): GLib-GObject-WARNING **: 14:44:08.084: invalid cast from 'JawImpl_4098' to 'AtkText'

(java:27047): Atk-CRITICAL **: 14:44:08.084: atk_text_get_character_count: assertion 'ATK_IS_TEXT (text)' failed

(java:27047): GLib-GObject-WARNING **: 14:44:09.462: invalid cast from 'JawImpl_4098' to 'AtkText'

(java:27047): Atk-CRITICAL **: 14:44:09.462: atk_text_get_character_count: assertion 'ATK_IS_TEXT (text)' failed

(java:27047): GLib-GObject-WARNING **: 14:44:10.107: invalid cast from 'JawImpl_4098' to 'AtkText'

(java:27047): Atk-CRITICAL **: 14:44:10.107: atk_text_get_character_count: assertion 'ATK_IS_TEXT (text)' failed

(java:27047): GLib-GObject-WARNING **: 14:44:10.174: invalid cast from 'JawImpl_4098' to 'AtkText'

(java:27047): Atk-CRITICAL **: 14:44:10.174: atk_text_get_character_count: assertion 'ATK_IS_TEXT (text)' failed

(java:27047): GLib-GObject-WARNING **: 14:44:11.623: invalid cast from 'JawImpl_4098' to 'AtkText'

(java:27047): Atk-CRITICAL **: 14:44:11.623: atk_text_get_character_count: assertion 'ATK_IS_TEXT (text)' failed

(java:27047): GLib-GObject-WARNING **: 14:44:12.230: invalid cast from 'JawImpl_4098' to 'AtkText'

(java:27047): Atk-CRITICAL **: 14:44:12.230: atk_text_get_character_count: assertion 'ATK_IS_TEXT (text)' failed

(java:27047): GLib-GObject-WARNING **: 14:44:12.293: invalid cast from 'JawImpl_4098' to 'AtkText'

(java:27047): Atk-CRITICAL **: 14:44:12.293: atk_text_get_character_count: assertion 'ATK_IS_TEXT (text)' failed

(java:27047): GLib-GObject-WARNING **: 14:44:13.666: invalid cast from 'JawImpl_4098' to 'AtkText'

(java:27047): Atk-CRITICAL **: 14:44:13.666: atk_text_get_character_count: assertion 'ATK_IS_TEXT (text)' failed

(java:27047): GLib-GObject-WARNING **: 14:44:14.319: invalid cast from 'JawImpl_4098' to 'AtkText'

(java:27047): Atk-CRITICAL **: 14:44:14.319: atk_text_get_character_count: assertion 'ATK_IS_TEXT (text)' failed

(java:27047): GLib-GObject-WARNING **: 14:44:14.380: invalid cast from 'JawImpl_4098' to 'AtkText'

(java:27047): Atk-CRITICAL **: 14:44:14.380: atk_text_get_character_count: assertion 'ATK_IS_TEXT (text)' failed

(java:27047): GLib-GObject-WARNING **: 14:44:15.803: invalid cast from 'JawImpl_4098' to 'AtkText'

(java:27047): Atk-CRITICAL **: 14:44:15.803: atk_text_get_character_count: assertion 'ATK_IS_TEXT (text)' failed

(java:27047): GLib-GObject-WARNING **: 14:44:16.425: invalid cast from 'JawImpl_4098' to 'AtkText'

(java:27047): Atk-CRITICAL **: 14:44:16.425: atk_text_get_character_count: assertion 'ATK_IS_TEXT (text)' failed

(java:27047): GLib-GObject-WARNING **: 14:44:16.490: invalid cast from 'JawImpl_4098' to 'AtkText'

(java:27047): Atk-CRITICAL **: 14:44:16.490: atk_text_get_character_count: assertion 'ATK_IS_TEXT (text)' failed

(java:27047): GLib-GObject-WARNING **: 14:44:17.881: invalid cast from 'JawImpl_4098' to 'AtkText'

(java:27047): Atk-CRITICAL **: 14:44:17.881: atk_text_get_character_count: assertion 'ATK_IS_TEXT (text)' failed

(java:27047): GLib-GObject-WARNING **: 14:44:18.526: invalid cast from 'JawImpl_4098' to 'AtkText'

(java:27047): Atk-CRITICAL **: 14:44:18.526: atk_text_get_character_count: assertion 'ATK_IS_TEXT (text)' failed

(java:27047): GLib-GObject-WARNING **: 14:44:18.591: invalid cast from 'JawImpl_4098' to 'AtkText'

(java:27047): Atk-CRITICAL **: 14:44:18.591: atk_text_get_character_count: assertion 'ATK_IS_TEXT (text)' failed

(java:27047): GLib-GObject-WARNING **: 14:44:19.953: invalid cast from 'JawImpl_4098' to 'AtkText'

(java:27047): Atk-CRITICAL **: 14:44:19.953: atk_text_get_character_count: assertion 'ATK_IS_TEXT (text)' failed

(java:27047): GLib-GObject-WARNING **: 14:44:20.597: invalid cast from 'JawImpl_4098' to 'AtkText'

(java:27047): Atk-CRITICAL **: 14:44:20.597: atk_text_get_character_count: assertion 'ATK_IS_TEXT (text)' failed

(java:27047): GLib-GObject-WARNING **: 14:44:20.659: invalid cast from 'JawImpl_4098' to 'AtkText'

(java:27047): Atk-CRITICAL **: 14:44:20.659: atk_text_get_character_count: assertion 'ATK_IS_TEXT (text)' failed

(java:27047): GLib-GObject-WARNING **: 14:44:22.002: invalid cast from 'JawImpl_4098' to 'AtkText'

(java:27047): Atk-CRITICAL **: 14:44:22.002: atk_text_get_character_count: assertion 'ATK_IS_TEXT (text)' failed

(java:27047): GLib-GObject-WARNING **: 14:44:22.627: invalid cast from 'JawImpl_4098' to 'AtkText'

(java:27047): Atk-CRITICAL **: 14:44:22.627: atk_text_get_character_count: assertion 'ATK_IS_TEXT (text)' failed

(java:27047): GLib-GObject-WARNING **: 14:44:22.688: invalid cast from 'JawImpl_4098' to 'AtkText'

(java:27047): Atk-CRITICAL **: 14:44:22.688: atk_text_get_character_count: assertion 'ATK_IS_TEXT (text)' failed

(java:27047): GLib-GObject-WARNING **: 14:44:23.999: invalid cast from 'JawImpl_4098' to 'AtkText'

(java:27047): Atk-CRITICAL **: 14:44:23.999: atk_text_get_character_count: assertion 'ATK_IS_TEXT (text)' failed

(java:27047): GLib-GObject-WARNING **: 14:44:24.641: invalid cast from 'JawImpl_4098' to 'AtkText'

(java:27047): Atk-CRITICAL **: 14:44:24.642: atk_text_get_character_count: assertion 'ATK_IS_TEXT (text)' failed

(java:27047): GLib-GObject-WARNING **: 14:44:24.704: invalid cast from 'JawImpl_4098' to 'AtkText'

(java:27047): Atk-CRITICAL **: 14:44:24.705: atk_text_get_character_count: assertion 'ATK_IS_TEXT (text)' failed
BUILD SUCCESSFUL (total time: 1 minute 38 seconds)
Le code que j'ai testé est assez ancien. J'ai commencé à l'écrire sur Java 1.4, et je lui ai fait traversé sans problème toutes les versions de Java jusqu'à la 8, toujours avec le JDK d'Oracle, mais ces messages me laissent perplexe. :? L'un de vous aurait-il une idée ? Je crois avoir installé tout ce qu'il faut, mais y aurait-il des paquets manquant ? Pour info, je vous donne une image de ce qui est installé pour OpenJDK 8 et 11 dans le gestionnaire de paquets:

Image

AJOUT:
Complément d'information: j'ai testé d'autres codes Java avec Netbeans et OpenJDK 8, quelques uns donnent des warnings, d'autres non. Donc, ce sont certains éléments de mes codes les plus anciens qui sont mal gérés par OpenJDK 8.

AJOUT 2:
J'essaie de localiser dans mon code à partir de quel moment j'ai ces messages, mais ce code est un tel bazar que je ne suis pas près d'arriver au bout. Après avoir fouillé sur le Web, je n'ai vu que des pages à propos de Armitage / metasploit qui seraient à l'origine de ces messages d'erreur faute de pouvoir se connecter à une base de données. On en parle notamment à propos de Kali-Linux. Si j'ai bien compris, ça sert à tester des vulnérabilités, mais vois pas à quel moment ça peut intervenir dans mon code. Pour Mint, le seul paquet équivalent que j'ai trouvé est websploit, mais je n'ai pas osé l'installer faute de comprendre à quoi ça sert. :?

Donc, merci pour vos éventuelles suggestions... ;)

A+
Portable Lenovo Ideapad 320-17IKB - Linux Mint 19.3 Tricia - Cinnamon 4.4.8
Noyau Linux 4.15.0-180-generic - CPU Intel© Core™ i5-7200U CPU @ 2.50GHz × 2
RAM 7.6 Go - Disque HDD 960.4 Go
Carte Graphique Nvidia GeForce 920MX 2 Go - Intel Corporation HD Graphics 620

On a toujours tort d'essayer d'avoir raison devant des gens qui ont toutes les bonnes raisons de croire qu'ils n'ont pas tort ! (Raymond Devos) :lol:

Avatar du membre
cyrille
Administrateur du site
Messages : 12387
Enregistré le : mar. 19 sept. 2017 08:49
Localisation : Nowhere
Contact :

Re: OpenJDK versus Oracle JDK : WARNINGS avec OpenJDK

Message par cyrille »

Les warnings ne sont normalement pas handicapants, signalent des "erreurs" mineures...
pas moyen de configurer le bouzin afin qu'ils ne les affichent tout simplement pas (comme dans php)
?séuqartéd sel ruoP / sécnoféd sel ruoP / sreiruréB sel ruoP / ?étéicos elleuQ

https://crust.ovh

Avatar du membre
Scrat
Messages : 644
Enregistré le : lun. 6 août 2018 19:05
Localisation : île d'Oléron

Re: OpenJDK versus Oracle JDK : WARNINGS avec OpenJDK

Message par Scrat »

Effectivement, ce n'est pas handicapant parce que malgré ça, le logiciel semble fonctionner normalement, et en plus ça ne semble concerner que le plus ancien de mes codes.
D'après ce que j'ai pu lire, ça devrait être lié à un module metasploit qui teste les vulnérabilités, mais pas moyen de trouver l'info sur le site openjdk. Je ne vois donc pas comment configurer openjdk pour qu'il ne me crache ces injures.
De mon côté, je vais essayer de trouver quelle partie de mon code déclenche ces messages. Ensuite, j'essaierai peut-être d'installer le paquet websploit qui paraît remplir le même rôle que metasploit. Mais je reste ouvert à toute suggestion.

A+
Portable Lenovo Ideapad 320-17IKB - Linux Mint 19.3 Tricia - Cinnamon 4.4.8
Noyau Linux 4.15.0-180-generic - CPU Intel© Core™ i5-7200U CPU @ 2.50GHz × 2
RAM 7.6 Go - Disque HDD 960.4 Go
Carte Graphique Nvidia GeForce 920MX 2 Go - Intel Corporation HD Graphics 620

On a toujours tort d'essayer d'avoir raison devant des gens qui ont toutes les bonnes raisons de croire qu'ils n'ont pas tort ! (Raymond Devos) :lol:

Avatar du membre
Scrat
Messages : 644
Enregistré le : lun. 6 août 2018 19:05
Localisation : île d'Oléron

Re: OpenJDK versus Oracle JDK : WARNINGS avec OpenJDK

Message par Scrat »

Bonjour.

J'ai un peu progressé. Voici quelques infos sur mes problèmes qui pourraient intéresser les utilisateurs de Java et de Netbeans.

1. Netbeans 8.2 et OpenJDK 11: j'ai eu la confirmation sur le site Apache que Netbeans 8.2 nécessite le JDK 8 et ne fonctionne pas avec les versions ultérieures de Java. Netbeans 8.2 fonctionne très bien avec OpenJDK 8. Pour utiliser les version ultérieures de Java, il est nécessaire d'attendre Apache Netbeans 12, en principe en septembre, pour lequel la migration depuis Oracle sera complète (intégration des modules C et C++ notamment) et qui sera compatible avec le JDK 12.

2. Origine des injures crachées par mon code: ces WARNINGS sont envoyés par la méthode getString de la classe ResourceBundle. J'utilise cette classe pour internationaliser mon code qui peut fonctionner en 4 langues: Français, Anglais, Allemand et Japonais... quoique les traductions allemandes et japonaises réalisées par moi-même en personne à l'aide de logiciels de traduction automatique soient un peu folkloriques, surtout s'agissant de termes techniques. :lol:

En résumé, j'ai créé 4 fichiers, un par langage, où les mots-clés intégrés dans le code sont associés à leur traduction dans la langue correspondant au fichier. J'accède à ces traductions par la méthode getLocalizedString de la classe LanguageManager. Le contenu de cette méthode est le suivant:

Code : Tout sélectionner

      public static String getLocalizedString(String key) {
        try {
            return resources.getString(key);
        }
        catch (Exception e) {
            return key;
        }
Cette classe LanguageManager est utilisée pour gérer la traduction de tous les éléments graphiques de l'interface utilisateur. Comme vous le voyez, cette méthode est déclarée avec les attributs public et static. Dans cette méthode, l'objet "resources" est une instance de la classe ResourceBundle construite à partir des fichiers de traduction. A l'affichage de l'interface ou au changement de langage, aucun message d'erreur.

Les messages d'erreur apparaissent lorsque je démarre un calcul à partir des paramètres définis interactivement dans l'interface utilisateur. Les sorties du calcul sont également traduites par la même méthode getLocalizedString, mais intégrée dans la classe qui lance le calcul où elle est déclarée avec l'attribut private et n'est pas statique !!!! C'est cette méthode privée non statique qui déclenche les messages d'erreur ! D'après tout ce que j'ai pu comprendre de mes lectures, ces messages correspondraient à de possibles vulnérabilités, et sans doute n'est-il pas recommandé d'accéder à des ressources publiques par une méthode privée non statique. Toujours est-il que le JDK 8 d'Oracle ne s'en plaint pas et que OpenJDK 8 rouspète !

Je ne sais plus trop pour quelle obscure raison j'avais décidé d'intégrer cette méthode dans la classe déclenchant le calcul plutôt que de faire appel à la méthode statique de la classe LanguageManager. C'était sans doute pour raccourcir les instructions de sortie des résultats qui étaient déjà passablement longues.

Je vais donc modifier mon code pour utiliser systématiquement la méthode statique de la classe LanguageManager, et je vous tiendrai au courant des résultats... même, et surtout, si vous n'en avez rien à foutre ! :lol:

A+
Portable Lenovo Ideapad 320-17IKB - Linux Mint 19.3 Tricia - Cinnamon 4.4.8
Noyau Linux 4.15.0-180-generic - CPU Intel© Core™ i5-7200U CPU @ 2.50GHz × 2
RAM 7.6 Go - Disque HDD 960.4 Go
Carte Graphique Nvidia GeForce 920MX 2 Go - Intel Corporation HD Graphics 620

On a toujours tort d'essayer d'avoir raison devant des gens qui ont toutes les bonnes raisons de croire qu'ils n'ont pas tort ! (Raymond Devos) :lol:

Avatar du membre
cyrille
Administrateur du site
Messages : 12387
Enregistré le : mar. 19 sept. 2017 08:49
Localisation : Nowhere
Contact :

Re: OpenJDK versus Oracle JDK : WARNINGS avec OpenJDK

Message par cyrille »

pour supprimer les warning, on peut mettre un @ devant le nom de la fonction dans sa déclaration

Exemple :

Code : Tout sélectionner

@SuppressWarnings("PMD")
public class Bar {
    void bar() {
        int foo;
    }
}
Mouai pas des plus pratique mais bon... pas un pro de java...
?séuqartéd sel ruoP / sécnoféd sel ruoP / sreiruréB sel ruoP / ?étéicos elleuQ

https://crust.ovh

Avatar du membre
cyrille
Administrateur du site
Messages : 12387
Enregistré le : mar. 19 sept. 2017 08:49
Localisation : Nowhere
Contact :

Re: OpenJDK versus Oracle JDK : WARNINGS avec OpenJDK

Message par cyrille »

par contre si il y a des warnings c'est que le code n'est pas réellement propre... donc faut peut être chercher à corriger pourquoi il n'est pas propre

Sinon as tu un fichier /etc/netbeans.conf ou ailleurs contenant une ligne netbeans_default_options ?
?séuqartéd sel ruoP / sécnoféd sel ruoP / sreiruréB sel ruoP / ?étéicos elleuQ

https://crust.ovh

Avatar du membre
cyrille
Administrateur du site
Messages : 12387
Enregistré le : mar. 19 sept. 2017 08:49
Localisation : Nowhere
Contact :

Re: OpenJDK versus Oracle JDK : WARNINGS avec OpenJDK

Message par cyrille »

Sinon pour php, neatbeans (je n'utilise pas), propose de cacher certains warning, peut être en est il de meme pour Java. Mais à vrai dire, kje n'en sais strictement rien...
https://stackoverflow.com/questions/327 ... ng-warning
?séuqartéd sel ruoP / sécnoféd sel ruoP / sreiruréB sel ruoP / ?étéicos elleuQ

https://crust.ovh

Avatar du membre
Scrat
Messages : 644
Enregistré le : lun. 6 août 2018 19:05
Localisation : île d'Oléron

Re: OpenJDK versus Oracle JDK : WARNINGS avec OpenJDK

Message par Scrat »

Merci Cyrille pour tes suggestions.

Il y a un point sur lequel tu as raison : c'est que le code n'est pas réellement propre ! C'est une espèce de monstruosité datant de mes débuts avec Java il y a très longtemps. A l'époque, j'avais essayé de transcrire en Java un code de calcul aérodynamique écrit en Fortran pour m'initier à la programmation orientée objet. J'étais très loin de maîtriser Java, et d'ailleurs je ne le maîtrise toujours pas car certains concepts m'échappent.

Bref, j'ai mis un mois à retranscrire en Java la partie purement calcul... et trois ans pour pondre l'interface utilisateur avec les composants graphiques Swing ! Ensuite, j'ai passé encore quelques années à ajouter des fonctionnalités, ce qui n'a fait qu'alourdir le code parce que la structure du projet était inadaptée dès le départ faute de savoir ce que je voulais. Ce qui m'a posé le plus de problèmes est justement l'internationalisation. J'ai commencé à écrire ce code avec Java 4, et j'ai dû le terminer avec Java 6.

Pour moi, l'essentiel est d'avoir localisé le problème : c'est la façon d'accéder aux fichiers de traduction qui est différente dans la partie calcul. Mais certaines parties du code sont franchement innommables et mériteraient un bon nettoyage, ce que j'ai toujours repoussé. C'est peut-être le moment de me lancer dans un grand nettoyage de printemps. ;)

A+
Portable Lenovo Ideapad 320-17IKB - Linux Mint 19.3 Tricia - Cinnamon 4.4.8
Noyau Linux 4.15.0-180-generic - CPU Intel© Core™ i5-7200U CPU @ 2.50GHz × 2
RAM 7.6 Go - Disque HDD 960.4 Go
Carte Graphique Nvidia GeForce 920MX 2 Go - Intel Corporation HD Graphics 620

On a toujours tort d'essayer d'avoir raison devant des gens qui ont toutes les bonnes raisons de croire qu'ils n'ont pas tort ! (Raymond Devos) :lol:

Avatar du membre
Scrat
Messages : 644
Enregistré le : lun. 6 août 2018 19:05
Localisation : île d'Oléron

Re: OpenJDK versus Oracle JDK : WARNINGS avec OpenJDK

Message par Scrat »

Bonjour.

Suite de mes essais avec OpenJDK.

1. J'exécute mon code en dehors de Netbeans en utilisant OpenJDK 8: mêmes messages de WARNING que pour l'exécution dans Netbeans, ce qui est normal vu que Netbeans est configuré avec OpenJDK 8.

2. J'exécute mon code en dehors de Netbeans en utilisant OpenJDK 11: exécution normale, pas de messages d'erreur. 8-)

Donc, OpenJDK 11 ne balance plus d'injures, et je le laisse comme version Java par défaut sur mon système.

Par contre, je suis obligé de garder un JDK 8 pour que Netbeans 8.2 fonctionne. La plateforme Java par défaut que je définis dans le fichier de configuration de Netbeans est actuellement OpenJDK 8.

Mais à l'intérieur de Netbeans, on peut définir plusieurs plateformes Java et en choisir une pour chaque projet. J'ai ainsi pu rajouter la plateforme Oracle JDK 8, mais quand je rajoute OpenJDK 11, Netbeans ne reconnaît pas les fichiers jar. Donc, impossible de créer un projet avec une version de Java supérieure à 8, mais ce n'est pas gênant car le code du projet fonctionne avec une version Java 11 en dehors de Netbeans.

Mais pour me débarrasser complètement d'Oracle et passer définitivement à OpenJDK, il me faudra attendre que la migration de Netbeans depuis Oracle vers Apache soit complète pour mettre Netbeans à jour, ce qui devrait pouvoir se faire en septembre avec la livraison de la version Apache Netbeans 12.

En conclusion, pour ceux qui veulent abandonner Oracle, préférez OpenJDK 11 à OpenJDK 8.

Voilà, on peut fermer ce sujet. Merci à Cyrille pour ses suggestions.

A+
Portable Lenovo Ideapad 320-17IKB - Linux Mint 19.3 Tricia - Cinnamon 4.4.8
Noyau Linux 4.15.0-180-generic - CPU Intel© Core™ i5-7200U CPU @ 2.50GHz × 2
RAM 7.6 Go - Disque HDD 960.4 Go
Carte Graphique Nvidia GeForce 920MX 2 Go - Intel Corporation HD Graphics 620

On a toujours tort d'essayer d'avoir raison devant des gens qui ont toutes les bonnes raisons de croire qu'ils n'ont pas tort ! (Raymond Devos) :lol:

Répondre