8
votes

ExceptionnelInitializerError dans l'application Android?

Dans mon application Android, la classe d'activité WebView a suivi une ligne suivante,

01-19 21:38:00.652: E/AndroidRuntime(4085): FATAL EXCEPTION: main
01-19 21:38:00.652: E/AndroidRuntime(4085): java.lang.ExceptionInInitializerError
01-19 21:38:00.652: E/AndroidRuntime(4085):     at com.android.quotes.JSInterface.<init>(JSInterface.java:33)
01-19 21:38:00.652: E/AndroidRuntime(4085):     at com.android.quotes.CHQuotesActivity.onCreate(CHQuotesActivity.java:19)
01-19 21:38:00.652: E/AndroidRuntime(4085):     at android.app.Activity.performCreate(Activity.java:4465)
01-19 21:38:00.652: E/AndroidRuntime(4085):     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1049)
01-19 21:38:00.652: E/AndroidRuntime(4085):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1919)
01-19 21:38:00.652: E/AndroidRuntime(4085):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1980)
01-19 21:38:00.652: E/AndroidRuntime(4085):     at android.app.ActivityThread.access$600(ActivityThread.java:122)
01-19 21:38:00.652: E/AndroidRuntime(4085):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1146)
01-19 21:38:00.652: E/AndroidRuntime(4085):     at android.os.Handler.dispatchMessage(Handler.java:99)
01-19 21:38:00.652: E/AndroidRuntime(4085):     at android.os.Looper.loop(Looper.java:137)
01-19 21:38:00.652: E/AndroidRuntime(4085):     at android.app.ActivityThread.main(ActivityThread.java:4340)
01-19 21:38:00.652: E/AndroidRuntime(4085):     at java.lang.reflect.Method.invokeNative(Native Method)
01-19 21:38:00.652: E/AndroidRuntime(4085):     at java.lang.reflect.Method.invoke(Method.java:511)


2 commentaires

Est-il possible de créer un manutentionnaire asyncaptique et un gestionnaire n'importe où dans le code?


Semble que la trace ne montre que lorsque l'exception se produit à. Mais ne montre pas ce qu'il est le causant, à partir de l'exception, trouvez cette ligne causée par: . Vérifiez la ligne qui provoque l'erreur.


5 Réponses :


16
votes

basé sur cette documentation Un exceptionnelImitializIniTiorialisiferror est lancé pour indiquer qu'une exception s'est produite lors de l'évaluation d'une initialiseur statique ou de l'initialisateur pour une variable statique. Vérifiez que votre code a une logique d'initialisation statique.


9 commentaires

Ouais, mais quel pourrait être le problème? Un membre statique ne devrait avoir aucun problème d'accès, il est donc statique.


@IGORGANAPOLSKY: Ce n'est pas dû à être consulté, il est dû à une valeur initialisée n'est pas bien construit. La partie latérale droite de la variable statique.


Intéressant, initialisé à quoi? Un type inconvertible ou null?


@IGORGANAPOLSKY: Je suppose que c'est, une instance de classe, qui lance une exception (ou) causant une mauvaise dépendance.


J'utilise une bibliothèque dans mon application. Pour une classe spécifique dans cette bibliothèque, chaque fois que je le crée une nouvelle instance, mon application se bloque et me donne la même exception. Puisqu'il s'agit d'une classe de bibliothèque, cela signifie que je ne peux rien changer de chose. Dans le même temps, je veux utiliser, c'est la fonctionnalité à l'intérieur de cette classe. Je suis totalement coincé et Cannto trouver un moyen de résoudre ce problème, des suggestions? Merci


@ SUDA.NESE Je suggérerais de créer une nouvelle question et de faire référence à cette question, vous pourriez obtenir de nombreuses réponses.


@Nambari: Je l'ai déjà fait ici: Stackoverflow.com/q/42227184/2135363 .. et ici: < Un href = "http://stackoverflow.com/q/42248119/2135363"> Stackoverflow.com/q/42248119/2135363 .. S'il vous plaît jeter un oeil.


@MCLAN Avez-vous trouvé une solution à votre problème?


@ user158 ne peut pas se souvenir. Mais vous vérifiera pour vous.



1
votes

java.lang.exceptioninInitializerError OS 11

Si cela est lié à OKHTTP, mettez à jour votre version 4.4.0.

dans cette version sa fixe.

implémentation 'com.squareeup.okhttp3: Logging-Interceptor: 4.4.0'

Merci.


2 commentaires

Cela m'aide beaucoup .. merci!


@Ginalsoftwaredev Bienvenue :)



0
votes

étrange! Mais laissez-moi partager mon expérience, peut-être que cela peut aider quelqu'un!

travaillait sur une application Android qui était précédemment exécutée sans aucun problème. Après que je repose mon appareil Android et sur la première installation de l'application après la réinitialisation. je obtenu cette exception java.lang.exationningInitializerError

  1. J'ai désinstallé l'application
  2. nettoyé le projet
  3. Reconstruisez le projet

    Après cela quand j'ai couru l'application, l'exception était partie.

    Je ne sais pas ce qui s'est passé, mais les étapes ci-dessus ont juste résolu le problème.


0 commentaires

0
votes

the ExceptionnelInitializImizerError ( lien mis à jour ) montre qu'un exception inattendue s'est produit dans un initialiseur statique . Littéralement, si ce exception est affiché, il convient de comprendre que Java n'a pas réussi à évaluer sur Initializer Static Block ou sur l'instanciation d'une variable statique .

Quoi qu'il en soit, chaque moment Initializer statique Rencontres d'une exception est automatiquement enveloppé dans une instance de ExceptionnelInitializererError classe. De telle manière, il conserve une référence à l'exception réelle comme cause première.

sur ma situation, en dessous de la trace d'exception: xxx

J'ai mentionné directement de ce qui a provoqué l'erreur de causée par: . Par conséquent, j'ai découvert que je suis instantanée une variable statique qui a une valeur null . Je l'ai résolu et tout fonctionnait parfaitement.


0 commentaires

0
votes

Si votre version Android est 11 ou plus, vous pouvez rencontrer java.lang.exationnInitializerError code> et IllégalstateException code> pour lequel vous devrez ajouter les dernières dépendances OKHTTP3 qui sont:

implementation 'com.squareup.okhttp3:logging-interceptor:4.9.0'


0 commentaires