Android studio报: java.lang.ExceptionInInitializerError 错误

本文介绍了一种常见的Android应用启动时出现的ExceptionInInitializerError错误,并详细解释了该错误产生的原因及解决方法。

一、问题描述


android studio导入一个项目报一堆错误:


Process: xhs.com.xhswelcomeanim, PID: 1416
                                                                      java.lang.ExceptionInInitializerError
                                                                          at com.werb.gankwithzhihu.ui.fragment.ZhihuFragment.createPresenter(ZhihuFragment.java:33)
                                                                          at com.werb.gankwithzhihu.ui.fragment.ZhihuFragment.createPresenter(ZhihuFragment.java:25)
                                                                          at com.werb.gankwithzhihu.ui.base.MVPBaseFragment.onCreate(MVPBaseFragment.java:35)
                                                                          at android.support.v4.app.Fragment.performCreate(Fragment.java:2068)
                                                                          at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1055)
                                                                          at android.support.v4.app.BackStackRecord.setLastIn(BackStackRecord.java:838)
                                                                          at android.support.v4.app.BackStackRecord.calculateFragments(BackStackRecord.java:861)
                                                                          at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:719)
                                                                          at android.support.v4.app.FragmentManagerImpl.execSingleAction(FragmentManager.java:1638)
                                                                          at android.support.v4.app.BackStackRecord.commitNowAllowingStateLoss(BackStackRecord.java:679)
                                                                          at android.support.v4.app.FragmentPagerAdapter.finishUpdate(FragmentPagerAdapter.java:143)
                                                                          at android.support.v4.view.ViewPager.populate(ViewPager.java:1240)
                                                                          at android.support.v4.view.ViewPager.populate(ViewPager.java:1088)
                                                                          at android.support.v4.view.ViewPager.onMeasure(ViewPager.java:1614)
                                                                          at android.view.View.measure(View.java:18026)
                                                                          at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5702)
                                                                          at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1692)
                                                                          at android.widget.LinearLayout.measureVertical(LinearLayout.java:760)
                                                                          at android.widget.LinearLayout.onMeasure(LinearLayout.java:629)
                                                                          at android.view.View.measure(View.java:18026)
                                                                          at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5702)
                                                                          at android.support.design.widget.CoordinatorLayout.onMeasureChild(CoordinatorLayout.java:700)
                                                                          at android.support.design.widget.HeaderScrollingViewBehavior.onMeasureChild(HeaderScrollingViewBehavior.java:90)
                                                                          at android.support.design.widget.AppBarLayout$ScrollingViewBehavior.onMeasureChild(AppBarLayout.java:1364)
                                                                          at android.support.design.widget.CoordinatorLayout.onMeasure(CoordinatorLayout.java:765)
                                                                          at android.view.View.measure(View.java:18026)
                                                                          at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5702)
                                                                          at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1692)
                                                                          at android.widget.LinearLayout.measureHorizontal(LinearLayout.java:1244)
                                                                          at android.widget.LinearLayout.onMeasure(LinearLayout.java:631)
                                                                          at android.view.View.measure(View.java:18026)
                                                                          at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5702)
                                                                          at android.widget.FrameLayout.onMeasure(FrameLayout.java:465)
                                                                          at android.support.v7.widget.ContentFrameLayout.onMeasure(ContentFrameLayout.java:135)
                                                                          at android.view.View.measure(View.java:18026)
                                                                          at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5702)
                                                                          at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1692)
                                                                          at android.widget.LinearLayout.measureVertical(LinearLayout.java:760)
                                                                          at android.widget.LinearLayout.onMeasure(LinearLayout.java:629)
                                                                          at android.view.View.measure(View.java:18026)
                                                                          at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5702)
                                                                          at android.widget.FrameLayout.onMeasure(FrameLayout.java:465)
                                                                          at android.view.View.measure(View.java:18026)
                                                                          at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5702)
                                                                          at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1692)
                                                                          at android.widget.LinearLayout.measureVertical(LinearLayout.java:760)
                                                                          at android.widget.LinearLayout.onMeasure(LinearLayout.java:629)
                                                                          at android.view.View.measure(View.java:18026)
                                                                          at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5702)
                                                                          at android.widget.FrameLayout.onMeasure(FrameLayout.java:465)
                                                                          at com.android.internal.policy.impl.PhoneWindow$DecorView.onMeasure(PhoneWindow.java:2785)
                                                                          at android.view.View.measure(View.java:18026)
                                                                          at android.view.ViewRootImpl.performMeasure(ViewRootImpl.java:2456)
                                                                          at android.view.ViewRootImpl.measureHierarchy(ViewRootImpl.java:1440)
                                                                      at android.view.View


报 java.lang.ExceptionInInitializerError错误,网上的解析是:


当在静态初始化块中出现了异常的时候,JVM会抛出 java.lang.ExceptionInInitializerError异常。如果你了解Java中的静态变量,你会知道它们是在类加载的时候进行初始化的。如果在这个静态变量初始化的过程中出现了异常,那么就会抛出 java.lang.ExceptionInInitializerError异常。任何异常都可能会引发这种情况,比如说,java.lang.ArrayIndexOutOfBound或者java.lang.NullPointerException。Java开发人员通常会被这个错误弄晕,他觉得自己并没有定义任何的静态初始化块,为什么还会抛出ExceptionInInitializerError异常;事实上,Java默认会将静态变量的初始化放在一个默认的静态初始化块中,然后按它们在源文件中声明的顺序来进行初始化。


二、解决方法


找了半天没发现有什么错误啊,最后在AndroidManifest.xml清单文件中,发现了问题所在:




他在这引用了MaApp这个类:




MaApp继承的是全局的application这个类,所以在初始化时如果没有引用进来的话,就会报错,而我的那个清单文件中并没有引用进来所以报错了.把他加进来就好了:



### 三级标题:Lombok `java.lang.ExceptionInInitializerError` 错误原因分析 在使用 Lombok 时,如果遇到 `java.lang.ExceptionInInitializerError` 异常,通常是因为 Lombok 版本与当前使用的 JDK 不兼容。例如,在 Java 10 及以上版本中,低版本的 Lombok(如 0.12)可能无法正常工作[^2]。此外,Maven 编译插件版本也可能影响编译过程,如 Maven-Compiler-Plugin 3.8.1 在编译 Java 17 的项目时可能会出现 `java.lang.ExceptionInitializerError` 错误[^1]。 ### 三级标题:解决 Lombok `java.lang.ExceptionInInitializerError` 的方法 要解决这个问题,可以尝试以下几种方法: 1. **升级 Lombok 版本**:确保使用的是最新版本的 Lombok,以支持更高版本的 Java。可以通过访问 [Maven Repository](https://mvnrepository.com/artifact/org.projectlombok/lombok) 来查找最新的 Lombok 版本[^4]。 示例代码: ```xml <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <version>1.18.24</version> <!-- 使用最新版本 --> <scope>provided</scope> </dependency> ``` 2. **检查 Maven 插件版本**:确认使用的 Maven-Compiler-Plugin 版本是否支持当前的 Java 版本。如果是 Java 17,则需要考虑升级到支持该版本的插件版本[^1]。 3. **调整 Lombok 依赖的作用域**:将 Lombok 的作用域设置为 `provided`,这样它就不会被打包进最终的应用程序中,而是仅用于编译时[^4]。 ### 三级标题:验证解决方案 一旦进行了上述更改,请重新构建项目并观察是否解决了 `java.lang.ExceptionInInitializerError` 错误。如果问题依旧存在,请检查是否有其他依赖项或配置问题可能导致了异常。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值