stealone
Messages postés33Date d'inscriptionsamedi 4 décembre 2010StatutMembreDernière intervention31 mars 2016
-
Modifié par stealone le 4/10/2014 à 23:55
stealone
Messages postés33Date d'inscriptionsamedi 4 décembre 2010StatutMembreDernière intervention31 mars 2016
-
5 oct. 2014 à 00:21
Bonjour, après modification de quelques lignes de code et compilation, je reçois une erreur que je ne comprend pas. Le output de Netbeans m'affiche: ExceptionInInitializerError. Je suis tout confus. Aidez moi, je ne sais pas à quoi renvoie cette erreur.
Tout ce qui brille n'est pas or.
A voir également:
Exception in thread "main" java.lang.error: unresolved compilation problem:
KX
Messages postés16733Date d'inscriptionsamedi 31 mai 2008StatutModérateurDernière intervention31 janvier 2024127 5 oct. 2014 à 00:00
Bonjour,
Cela arrive lorsqu'une exception se produit sur un code d'initialisation d'une variable static. Exemple :
public class Test
{
public static final int N = init();
private static int init()
{
int n = 0;
if (n == 0)
throw new RuntimeException();
return n;
}
public static void main(String[] args)
{
System.out.println(N);
}
}
stealone
Messages postés33Date d'inscriptionsamedi 4 décembre 2010StatutMembreDernière intervention31 mars 2016 5 oct. 2014 à 00:09
Merci pour la prompte réponse. En d'autres termes tu veux dire que les variables statiques doivent s'initialise dans un block statique ou alors elle s'initialise une fois pour toutes?
KX
Messages postés16733Date d'inscriptionsamedi 31 mai 2008StatutModérateurDernière intervention31 janvier 2024127 Modifié par KX le 5/10/2014 à 03:44
Les variables statiques sont initialisées au chargement de la classe, cela ne se fait pas au démarrage, mais à la première utilisation. C'est pour cela qu'en JDBC on fait un Class.forName("driver"), ça permet d'initialiser le driver (généralement au démarrage de l'application) dont la classe ne serait jamais chargée sinon.
Sinon, peu importe que la variable statique soit initialisée directement ou par un appel à une méthode statique. Mais dans le cas d'une ExceptionInInitializerError cela vient forcément d'une exception dans la méthode statique (comme dans mon exemple) ce qui a empêché l'initialisation de la variable statique et donc de la classe. Dans ce cas le programme ne peut pas continuer...
stealone
Messages postés33Date d'inscriptionsamedi 4 décembre 2010StatutMembreDernière intervention31 mars 2016 5 oct. 2014 à 00:21
Merci kx c'est grâce à des gens comme toi que les fora ont leur puissance. C'est assez claire tes réponses.