[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
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.
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.
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
- I uninstalled the app
- Cleaned the project
- 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.
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.