Android studio报: java.lang.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这个类,所以在初始化时如果没有引用进来的话,就会报错,而我的那个清单文件中并没有引用进来所以报错了.把他加进来就好了:

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持我们!

时间: 2017-03-02

Java编程中使用throw关键字抛出异常的用法简介

throw抛出异常的方式比较直接: if(age < 0){ throw new MyException("年龄不能为负数!"); } 来看一个例子: package Test; public class Test2 { public static void main(String[] args) { String s = "abc"; if(s.equals("abc")) { throw new NumberFormatExceptio

深入探讨JAVA中的异常与错误处理

异常与错误: 异常: 在Java中程序的错误主要是语法错误和语义错误,一个程序在编译和运行时出现的错误我们统一称之为异常,它是VM(虚拟机)通知你的一种方式,通过这种方式,VM让你知道,你(开发人员)已经犯了个错误,现在有一个机会来修改它.Java中使用异常类来表示异常,不同的异常类代表了不同的异常.但是在Java中所有的异常都有一个基类,叫做Exception. 错误: 它指的是一个合理的应用程序不能截获的严重的问题.大多数都是反常的情况.错误是VM的一个故障(虽然它可以是任何系统级的服务).

解决出现 java.lang.ExceptionInInitializerError错误问题

解决出现 java.lang.ExceptionInInitializerError错误问题 今天启动一个项目... 在启动的时候报错... 查了半天错误信息 一直是说hibernate缓存管理出错.. 最后查看启动时候的log 发现在程序中报Java.lang.ExceptionInInitializerError 查看原因 最后是因为自己修改了静态常量是系统启动的时候自动获取properties值 结果获取错误 导致其在代码编译的时候造成出错 错误代码: public static fina

浅谈java中异常抛出后代码是否会继续执行

问题 今天遇到一个问题,在下面的代码中,当抛出运行时异常后,后面的代码还会执行吗,是否需要在异常后面加上return语句呢? public void add(int index, E element){ if(size >= elements.length) { throw new RuntimeException("顺序表已满,无法添加"); //return; //需要吗? } .... } 为了回答这个问题,我编写了几段代码测试了一下,结果如下: //代码1 public

启动tomcat时 错误: 代理抛出异常 : java.rmi.server.ExportException: Port already in use: 1099的解决办法

一.问题描述 今天一来公司,在IntelliJ IDEA 中启动Tomcat服务器时就出现了如下图所示的错误: 错误: 代理抛出异常错误: java.rmi.server.ExportException: Port already in use: 1099; nested exception is: java.net.BindException: Address already in use: JVM_Bind 这里说的是1099端口被其它进程占用了. 二.解决办法 找出占用1099端口的进程,

Java中避免空指针异常的方法

没人会喜欢空指针异常!有什么方法可以避免它们吗?或许吧.. 本文将讨论到以下几种技术 1.Optional类型(Java 8中新引入的) 2.Objects类(Java 7中原有的) Java 8中的Optional类 它是什么? 1.Java 8中新引入的类型 2.它是作为某个指定类型的对象的包装器或者用于那些不存在对象(null)的场景 简单来说,它是处理空值的一个更好的替代品(警告:乍一看可能并没有那么明显) 基本用法 它是一种类型(一个类)--那么,怎么才能创建一个这个类型的实例? 使用

简单了解Java编程中抛出异常的方法

任何Java代码都可以抛出异常,如:自己编写的代码.来自Java开发环境包中代码,或者Java运行时系统.无论是谁,都可以通过Java的throw语句抛出异常.从方法中抛出的任何异常都必须使用throws子句. 1. throws抛出异常 如果一个方法可能会出现异常,但没有能力处理这种异常,可以在方法声明处用throws子句来声明抛出异常.例如汽车在运行时可能会出现故障,汽车本身没办法处理这个故障,那就让开车的人来处理. throws语句用在方法定义时声明该方法要抛出的异常类型,如果抛出的是Ex

Java java.lang.ExceptionInInitializerError 错误如何解决

 Java java.lang.ExceptionInInitializerError 错误如何解决 引起 Java.lang.ExceptionInInitializerError 错误的原因是:在类的初始化时,出错.也就是说,在加载类时,执行static的属性.方法块时,出错了. 比如 public class AA { private static AA aa = new AA(); private AA(){//构造方法 init(); } public void init(){ ...

java.lang.ExceptionInInitializerError异常的解决方法

今天在开发的过程中,遇到java.lang.ExceptionInInitializerError异常,百度查了一下,顺便学习学习,做个笔记 静态初始化程序中发生意外异常的信号,抛出ExceptionInInitializerError表明在计算静态初始值或静态变量的初始值期间发生异常. 要理解这个异常从Java类中的静态变量初始化过程说起,在Java类中静态变量的初始化顺序和静态变量的声明顺序是一致的.示例程序为: package com.lang.ininitialException; im

详解Java异常处理中throw与throws关键字的用法区别

抛出异常 抛出异常有三种形式,一是throw,一个throws,还有一种系统自动抛异常.下面它们之间的异同. 系统自动抛异常 当程序语句出现一些逻辑错误.主义错误或类型转换错误时,系统会自动抛出异常.如: public static void main(String[] args) { int a = 5, b =0; System.out.println(5/b); //function(); } 系统会自动抛出ArithmeticException异常: Exception in threa

详解Java异常处理中finally子句的运用

当异常被抛出,通常方法的执行将作一个陡峭的非线性的转向.依赖于方法是怎样编码的,异常甚至可以导致方法过早返回.这在一些方法中是一个问题.例如,如果一个方法打开一个文件项并关闭,然后退出,你不希望关闭文件的代码被异常处理机制旁路.finally关键字为处理这种意外而设计. finally创建一个代码块.该代码块在一个try/catch 块完成之后另一个try/catch出现之前执行.finally块无论有没有异常抛出都会执行.如果异常被抛出,finally甚至是在没有与该异常相匹配的catch子句

一看就懂 详解JAVA泛型通配符T,E,K,V区别

1. 先解释下泛型概念 泛型是Java SE 1.5的新特性,泛型的本质是参数化类型,也就是说所操作的数据类型被指定为一个参数.这种参数类型可以用在类.接口和方法的创建中,分别称为泛型类.泛型接口.泛型方法.Java语言引入泛型的好处是安全简单. 在Java SE 1.5之前,没有泛型的情况的下,通过对类型Object的引用来实现参数的"任意化","任意化"带来的缺点是要做显式的强制类型转换,而这种转换是要求开发者对实际参数类型可以预知的情况下进行的.对于强制类型转

详解Java内存管理中的JVM垃圾回收

一.概述 相比起C和C++的自己回收内存,JAVA要方便得多,因为JVM会为我们自动分配内存以及回收内存. 在之前的JVM 之内存管理 中,我们介绍了JVM内存管理的几个区域,其中程序计数器以及虚拟机栈是线程私有的,随线程而灭,故而它是不用考虑垃圾回收的,因为线程结束其内存空间即释放. 而JAVA堆和方法区则不一样,JAVA堆和方法区时存放的是对象的实例信息以及对象的其他信息,这部分是垃圾回收的主要地点. 二.JAVA堆垃圾回收 垃圾回收主要考虑的问题有两个:一个是效率问题,一个是空间碎片问题.

详解Django缓存处理中Vary头部的使用

Vary 头部定义了缓存机制在构建其缓存键值时应当将哪个请求头标考虑在内. 例如,如果网页的内容取决于用户的语言偏好,该页面被称为根据语言而不同. 缺省情况下,Django 的缓存系统使用所请求的路径(比如:"/stories/2005/jun/23/bank_robbed/" )来创建其缓存键.这意味着每次请求都会使用同样的缓存版本,不考虑才客户端cookie和语言配置的不同. 除非你使用Vary头部通知缓存机制页面输出要依据请求头里的cookie,语言等的设置而不同. 要在 Dja

详解Java多线程编程中互斥锁ReentrantLock类的用法

0.关于互斥锁 所谓互斥锁, 指的是一次最多只能有一个线程持有的锁. 在jdk1.5之前, 我们通常使用synchronized机制控制多个线程对共享资源的访问. 而现在, Lock提供了比synchronized机制更广泛的锁定操作, Lock和synchronized机制的主要区别: synchronized机制提供了对与每个对象相关的隐式监视器锁的访问, 并强制所有锁获取和释放均要出现在一个块结构中, 当获取了多个锁时, 它们必须以相反的顺序释放. synchronized机制对锁的释放是

详解Java的MyBatis框架中动态SQL的基本用法

有些时候,sql语句where条件中,需要一些安全判断,例如按某一条件查询时如果传入的参数是空,此时查询出的结果很可能是空的,也许我们需要参数为空时,是查出全部的信息.使用Oracle的序列.mysql的函数生成Id.这时我们可以使用动态sql.下文均采用mysql语法和函数(例如字符串链接函数CONCAT). selectKey 标签 在insert语句中,在Oracle经常使用序列.在MySQL中使用函数来自动生成插入表的主键,而且需要方法能返回这个生成主键.使用myBatis的select

详解Java多线程编程中LockSupport类的线程阻塞用法

LockSupport是用来创建锁和其他同步类的基本线程阻塞原语. LockSupport中的park() 和 unpark() 的作用分别是阻塞线程和解除阻塞线程,而且park()和unpark()不会遇到"Thread.suspend 和 Thread.resume所可能引发的死锁"问题. 因为park() 和 unpark()有许可的存在:调用 park() 的线程和另一个试图将其 unpark() 的线程之间的竞争将保持活性. 基本用法 LockSupport 很类似于二元信号

详解Java中ByteArray字节数组的输入输出流的用法

ByteArrayInputStream 介绍 ByteArrayInputStream 是字节数组输入流.它继承于InputStream. 它包含一个内部缓冲区,该缓冲区包含从流中读取的字节:通俗点说,它的内部缓冲区就是一个字节数组,而ByteArrayInputStream本质就是通过字节数组来实现的. 我们都知道,InputStream通过read()向外提供接口,供它们来读取字节数据:而ByteArrayInputStream 的内部额外的定义了一个计数器,它被用来跟踪 read() 方

详解Swift的switch...case语句中break关键字的用法

与Objective-C中这部分内容相比,在Swift中switch得到了极大的改善.这是一件非常有趣的事,因为这还是没有添加到Objective-C中,还是没有打破Objective-C是C的超集的事实. 第一件令人兴奋的地方是可以对字符串转换.这也许正是你之前想要做,却不能做的事.在Objective-C中如果要对字符串用"switch",你必须要使用多个if语句,同时要用isEqualToString:,像下面这样: if ([person.name isEqualToStrin