[Solved] ExceptionInInitializerError in Android app?

In my Android app the WebView activity class has following line,

webView.addJavascriptInterface(new JSInterface(this), "Android");   

And in JSInterface class, I’m initializing Google “SpreadSheetService” like below,

import com.google.gdata.client.spreadsheet.SpreadsheetService;

--- some more imports ---


public class JSInterface {
    Context mContext;

    public SpreadsheetService service;

    /** Instantiate the interface and set the context */
    JSInterface(Context c) {
        mContext = c;
        service = new SpreadsheetService("List Demo");
    }

    ------- some more code -----

When I run the application I’m getting the following exception,

01-19 21:38:00.652: E/AndroidRuntime(4085): java.lang.ExceptionInInitializerError

which has the below trace

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)

I searched Google, but didnt get any solution for this.. Any idea on why I’m getting this exception??

Peter

Enquirer: Naveen

||

Solution #1:

Based on this documentation An ExceptionInInitializerError is thrown to indicate that an exception occurred during evaluation of a static initializer or the initializer for a static variable. Check your code has any static initialization logic.

Respondent: kosa

Solution #2:

java.lang.ExceptionInInitializerError android OS 11

if this is related to OkHttp then update your version 4.4.0.

In this version its fixed.

implementation ‘com.squareup.okhttp3:logging-interceptor:4.4.0’

thanks.

Respondent: Yogendra

Solution #3:

Strange! But let me share my experience, maybe it can help someone!

Was working on an Android app that was previously being run without any issues.
After I rest my Android device and on the first install of App after the reset. I
got this exception java.lang.ExceptionInInitializerError

  1. I uninstalled the app
  2. Cleaned the project
  3. Rebuild the project

After that when I ran the app the exception was gone.

I don’t know what happened, but the above steps just solved the issue.

Respondent: Muhammad waris

Solution #4:

The ExceptionInInitializerError (updated link) shows that an unexpected exception has occurred in a static initializer. Literally, if this exception is shown, one should understand that Java has failed to do evaluation on static initializer block or on instantiation of a static variable.

Anyways, each moment static initializer encounters an exception its automatically wrapped into an instance of ExceptionInInitializerError class. In such a way it keeps a reference to the actual exception as the root cause.

On my situation, using below exception trace:

   java.lang.ExceptionInInitializerError
        at com.fole_Studios.sup.database.DBqueries.getAllUniversities(DBqueries.java:581)
        at com.fole_Studios.sup.RegisterFragment.universityDataList(RegisterFragment.java:216)
         ...............
     Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String com.google.firebase.auth.FirebaseUser.getUid()' on a null object reference
        at com.fole_Studios.sup.database.DBqueries.<clinit>(DBqueries.java:80)

I referred directly from what caused the error from Caused by:. Hence, I discovered that I am instantiating a static variable which has a null value. I solved it and everything was working perfect.

Respondent: 4xMafole

The answers/resolutions are collected from stackoverflow, are licensed under cc by-sa 2.5 , cc by-sa 3.0 and cc by-sa 4.0 .

Leave a Reply

Your email address will not be published.