今天看错误堆栈尽然发现一个以前没见过的Error ,java.lang.ExceptionInInitializerError
首先看下类原型
public class ExceptionInInitializerError extends LinkageError {
然后看下类说明
* Signals that an unexpected exception has occurred in a static initializer
.
* An <code>ExceptionInInitializerError</code> is thrown to indicate that an
* exception occurred during evaluation of a static initializer or the
* initializer for a static variable.
接着看下LinkageError的来历
public class LinkageError extends Error
再看看他的类说明
* Subclasses of <code>LinkageError</code> indicate that a class has
* some dependency on another class
; however, the latter class has
* incompatibly changed after the compilation of the former class.
顺便我们再来看下LinkageError的嫡系有哪些
好吧,这一家子的Error都是我们得罪不起的,他的孙子我们会经常见,而且好定位,儿子类型的错误不常见也不好直接定位。
说到这里,开始引入正题,看堆栈的时候,经常发现几个函数很特殊,例如堆栈里有如下2种函数
XxxClass.<init>
XxxxClass.<clinit>
对比其他函数调用堆栈的显示
XxxClass.sayHello
XxxClass.sayBye
最上面2个函数很特殊,用尖括号括起来,看下JVM的官方规范里的解释
http://java.sun.com/docs/books/jvms/second_edition/html/Overview.doc.html
3.9 Specially Named Initialization Methods
At the level of the Java virtual machine, every constructor (§2.12) appears as an instance initialization method that has the special name <init>. This name is supplied by a compiler. Because the name <init> is not a valid identifier, it cannot be used directly in a program written in the Java programming language. Instance initialization methods may be invoked only within the Java virtual machine by the invokespecial instruction, and they may be invoked only on uninitialized class instances. An instance initialization method takes on the access permissions (§2.7.4) of the constructor from which it was derived.
A class or interface has at most one class or interface initialization method and is initialized (§2.17.4) by invoking that method. The initialization method of a class or interface is static and takes no arguments. It has the special name <clinit>. This name is supplied by a compiler. Because the name <clinit> is not a valid identifier, it cannot be used directly in a program written in the Java programming language. Class and interface initialization methods are invoked implicitly by the Java virtual machine; they are never invoked directly from any Java virtual machine instruction, but are invoked only indirectly as part of the class initialization process
搬出这个规范以及上面啰嗦的Error问题 是想说,以后看到堆栈,我们应该能第一时间就能明白错误大致发生在什么地方,大概原因是什么,了解这些,对加速定位问题是有帮助的。
- 大小: 53.4 KB
分享到:
相关推荐
- tp_new和tp_init函数(4.18 tp_new and tp_init functions) - 改变和重定向Clinic的输出(4.19 Changing and redirecting Clinic’s output) - 使用#ifdef技巧(4.20 The #ifdef trick) - 在Python文件中使用...
标题中的"Clinic-Management-PHP-MySQL-Source-Codes.zip_clinic_clinic php"表明这是一个基于PHP和MySQL开发的诊所管理系统源代码包。这个系统主要用于管理医疗诊所的日常运营和患者服务。从描述中我们可以了解到,...
An Attention-Based BiLSTM-CRF Model for Chinese Clinic Named Entity Recognition;基于注意力的 BiLSTM-CRF 模型 中国门诊病历文本命名实体识别
《Clinic - Operating Room 1.0:Unity3D中的医疗场景构建》 Unity3D作为全球领先的实时3D创作工具,广泛应用于游戏开发、虚拟现实(VR)、增强现实(AR)、模拟仿真以及电影级视觉效果等领域。在这款名为"Clinic - ...
【Java与牙科诊所管理系统】 Java是一种广泛使用的编程语言,以其跨平台、面向对象和安全性著称。在牙科诊所管理系统的开发中,Java扮演着核心角色,为系统提供了稳定和高效的基础架构。Java GUI(图形用户界面)则...
Clinic.js 开源Node.js性能分析套件。 演示和详细文档: : 安装 npm install -g clinic 入门 第一步,请运行clinic doctor : clinic doctor -- node server.js 然后使用wrk或autocannon对服务器进行基准测试:...
使用Spring Boot的小型诊所信息系统,之前毕设使用php语言完成的,经过学习,自己写了一个Java版 介绍 这是一个模拟小型诊所的项目,用于本人学习时编写的,基本功能完成 软件架构 单机版的SpringBoot项目,(All ...
clinic.c
"clinic-manager"是一个桌面应用程序,专为诊所管理设计,它采用了Java编程语言进行开发,并结合了Swing库作为用户界面的构建工具。Swing是Java Standard Edition (Java SE)的一部分,提供了一组丰富的组件和API,...
标题"Clinic"很可能指的是一个基于C#编程语言开发的医疗诊所管理软件或系统。这个系统可能涵盖了诊所日常运营的多个方面,如患者管理、预约安排、医疗记录、药品库存、账单处理等。在深入探讨这个系统之前,让我们先...
- src/main/java:存放Java源代码,包括主程序、服务层、持久层等。 - src/main/resources:存放配置文件、静态资源等。 - src/main/webapp:存放Web应用相关的资源,如HTML模板、CSS样式和JavaScript脚本。 2.2 ...
"Clinic:招聘任务"这个标题可能指的是一个项目或任务,可能是为了招聘具备Java技术背景的开发人员来构建或维护名为"Clinic"的系统。这个系统可能是一个医疗诊所的管理软件,涉及到患者信息管理、预约挂号、药品库存...
7. **版本控制Git**:`pet-clinic-master`的命名暗示了项目使用Git进行版本控制。Git是目前最流行的分布式版本控制系统,用于追踪代码的变更历史,协作开发和发布。 8. **持续集成/持续部署(CI/CD)**:项目可能还...
SpringPetClinic样品...如果执行此操作,它将立即获取您在项目中进行的更改(对Java源文件的更改也需要编译-大多数人为此使用IDE): ./mvnw spring-boot:run 如果您发现Spring Petclinic的错误/建议的改进 我们的问
5. **Entity和JPA注解**:在Pet Clinic中,每个业务对象(如Pet、Owner、Visit)都被表示为一个Java实体类,这些类通常会包含JPA注解,如@Entity、@Id、@ManyToOne等,用来定义数据表结构和关系。 6. **RESTful API...
2. **依赖注入**:在sf-pet-clinic中,你会看到如何通过Spring的XML配置或Java配置来声明和管理bean之间的依赖关系。这使得代码更易于理解和修改,因为组件的依赖关系是显式的,而不是硬编码的。 3. **Spring MVC**...
【sfg-pet-clinic】项目是一个基于Java技术栈的示例应用,它模拟了一个宠物诊所的管理系统。这个系统能够帮助管理员跟踪宠物、主人、医生以及预约等信息,是学习和理解Spring框架及其相关技术的一个良好实践案例。...
【标题】"mz-pet-clinic" 是一个基于Java技术构建的宠物诊所管理系统项目。这个项目可能旨在模拟一个小型的宠物医疗服务环境,提供诸如宠物信息管理、预约服务、病历记录等功能,帮助管理和优化宠物诊所的日常运营。...
--Young Neurosurgeon's News Written by leading skull base surgeons from the renowned House Clinic inLos Angeles, California, Lateral Skull Base Surgery: The House Clinic Atlas is a much-needed ...