Android应用程序中的初始化错误例外?

Android应用程序中的初始化错误例外?,android,android-webview,google-spreadsheet-api,Android,Android Webview,Google Spreadsheet Api,在我的Android应用程序中,WebView活动类有以下行: webView.addJavascriptInterface(new JSInterface(this), "Android"); 在JSInterface类中,我正在初始化Google“SpreadSheetService”,如下所示 import com.google.gdata.client.spreadsheet.SpreadsheetService; --- some more imports --- pub

在我的Android应用程序中,WebView活动类有以下行:

webView.addJavascriptInterface(new JSInterface(this), "Android");   
在JSInterface类中,我正在初始化Google“SpreadSheetService”,如下所示

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 -----
当我运行应用程序时,我得到以下异常:

01-19 21:38:00.652: E/AndroidRuntime(4085): java.lang.ExceptionInInitializerError
哪个有下面的痕迹

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)
01-19 21:38:00.652:E/AndroidRuntime(4085):致命异常:主
01-19 21:38:00.652:E/AndroidRuntime(4085):java.lang.ExceptionInInitializeError
01-19 21:38:00.652:E/AndroidRuntime(4085):在com.android.quotes.JSInterface.(JSInterface.java:33)
01-19 21:38:00.652:E/AndroidRuntime(4085):在com.android.quotes.chquoteActivity.onCreate(chquoteActivity.java:19)上
01-19 21:38:00.652:E/AndroidRuntime(4085):在android.app.Activity.performCreate(Activity.java:4465)上
01-19 21:38:00.652:E/AndroidRuntime(4085):在android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1049)上
01-19 21:38:00.652:E/AndroidRuntime(4085):在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1919)上
01-19 21:38:00.652:E/AndroidRuntime(4085):在android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1980)
01-19 21:38:00.652:E/AndroidRuntime(4085):在android.app.ActivityThread.access$600(ActivityThread.java:122)
01-19 21:38:00.652:E/AndroidRuntime(4085):在android.app.ActivityThread$H.handleMessage(ActivityThread.java:1146)
01-19 21:38:00.652:E/AndroidRuntime(4085):在android.os.Handler.dispatchMessage(Handler.java:99)上
01-19 21:38:00.652:E/AndroidRuntime(4085):在android.os.Looper.loop(Looper.java:137)上
01-19 21:38:00.652:E/AndroidRuntime(4085):位于android.app.ActivityThread.main(ActivityThread.java:4340)
01-19 21:38:00.652:E/AndroidRuntime(4085):位于java.lang.reflect.Method.Invokenactive(本机方法)
01-19 21:38:00.652:E/AndroidRuntime(4085):在java.lang.reflect.Method.invoke(Method.java:511)
我搜索了谷歌,但没有找到任何解决方案。。你知道我为什么会有这个例外吗


Peter

将抛出ExceptionInInitializeError,以指示在计算静态初始值设定项或静态变量的初始值设定项期间发生异常。检查您的代码是否有任何静态初始化逻辑。

java.lang.ExceptionInInitializerRor android OS 11

如果这与OkHttp有关,则更新您的版本4.4.0

在这个版本中,它是固定的

实现'com.squareup.okhttp3:logging interceptor:4.4.0'


谢谢。

奇怪!但让我分享我的经验,也许它可以帮助别人

正在开发一款Android应用程序,该应用程序以前运行时没有任何问题。 我在安卓设备上休息后,在重置后第一次安装应用程序。我 获取此异常
java.lang.ExceptionInInitializerError

  • 我卸载了这个应用程序
  • 清理项目
  • 重建项目
  • 之后,当我运行应用程序时,异常消失了

    我不知道发生了什么,但上面的步骤刚刚解决了问题。

    更新的链接显示
    静态初始值设定项中发生了意外异常。从字面上看,如果显示了这个
    异常
    ,应该理解Java未能对静态初始值设定项块静态变量的实例化进行求值

    无论如何,每个时刻静态初始值设定项都会遇到一个
    异常
    它会自动包装到
    异常InInitializeError
    类的实例中。以这种方式,它将实际的
    异常
    作为根本原因

    在我的情况下,使用以下异常跟踪:

       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)
    
    java.lang.ExceptionInInitializeError
    位于com.fole_Studios.sup.database.dbquerys.getAllUniversities(dbquerys.java:581)
    在com.fole_Studios.sup.RegisterFragment.universitydata上(RegisterFragment.java:216)
    ...............
    原因:java.lang.NullPointerException:尝试对空对象引用调用虚拟方法“java.lang.String com.google.firebase.auth.FirebaseUser.getUid()”
    在com.fole_Studios.sup.database.dbquerys.(dbquerys.java:80)
    

    我直接引用了引起错误的原因:
    。因此,我发现我正在实例化一个静态变量,该变量的值为
    null
    。我解决了问题,一切都很顺利。

    是的,但会有什么问题?静态成员在被访问时应该没有问题,因此它是静态的。@IgorGanapolsky:这不是因为被访问,而是因为被初始化的值没有正确构造。静态变量的右侧部分。有趣,初始化为什么?不可转换的类型或null?@IgorGanapolsky:我猜是某个类实例,它正在引发异常(或)导致某些不好的依赖关系。@Nambari:我已经在这里这样做了:。。这里:。。请看一看。是否可以在代码中的任何位置创建asyncTask/处理程序?似乎跟踪只显示发生异常的位置。但是没有显示导致它的原因,从异常中查找这一行
    原因:
    。检查导致错误的线路。