码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 异常:java lang AbstractMethodError


    通常在尝试调用抽象方法时抛出此**java.lang.AbstractMethodError。**通常,此错误是在编译时本身识别的,如果在运行时抛出此错误,则该类必须不兼容(与先前存在的类不兼容) )更改。因此,它是IncompatibleClassChange Error的子类。

    我们知道不能调用抽象方法,如果尝试这样做,则会收到编译时错误,因此您可能会认为_在运行时如何抛出此错误?_

    原因是**二进制不兼容** - 这是什么意思?

    每当修改一个类时,引用该(修改的)类的其他类将不会意识到其中所做的更改。因此,所有类都必须作为一个整体进行编译。 如果不是,那么您可能会遇到不兼容的类更改错误的子类之一。

    “ 此错误表明您调用的方法现在已转换为抽象方法”。

    请参阅以下示例,以了解有关此错误的信息

    class B
    {
    public void display()
    {
    System.out.println("I am inside B");
    }
    }
    
    
    import java.util.*;
    public class A extends B
    {
    public static void main(String args[])
    {
    A a=new A();
    a.display();
    }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18

    输出:

    C:log>javac A.java
    
    C:log>java A
    I am inside B
    
    • 1
    • 2
    • 3
    • 4

    现在,我将把**display()**方法转换为抽象方法,并单独进行编译。

    abstract class B
    {
    public abstract void display();
    }
    
    • 1
    • 2
    • 3
    • 4

    输出:

    C:log>javac A.java
    
    C:log>java A
    I am inside B
    
    C:log>javac B.java
    
    C:log>java A
    Exception in thread "main" java.lang.AbstractMethodError: B.display()V
            at A.display(A.java:3)
            at A.main(A.java:8)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    如您所见,在运行时引发此异常的原因是我没有将这些类作为一个整体进行编译。因此,每当对现有类进行更改时,请确保已对整个类进行了编译。

    因此,将方法转换为分布式类中的抽象方法不是一个好习惯。当您在应用程序中使用第三方库时,通常会发生此类错误。

    如果在编译时未显示此错误,即使您将其作为一个整体进行编译,则必须检查库设置和类路径设置。

    因为编译器通常在当前目录中也在系统库(如引导程序库和扩展库)中搜索类,但是JVM在指定的类路径中搜索类。

    如果您不小心将较旧的版本放置在系统库中,而将较新的版本放置在类路径中,则即使将其编译为整个软件包,也不会收到有关此错误的通知。

    因此,请确保已删除与旧软件包有关的设置。

    **参考:**来自Java错误和异常博客的JCG合作伙伴 Ganesh Bhuddhan提供的java.lang.AbstractMethodError 。

    翻译自: https://www.javacodegeeks.com/2012/08/exception-java-lang-abstractmethoderror.html

  • 相关阅读:
    【计算机网络】网络层(四)—— 网络层协议总结(ARP、ICMP、IGMP)
    深入理解 Java 对象的内存布局
    CentOS 7.6上安装RabbitMQ
    阿里开源数据同步神器DataX异构数据源间数据同步同步MySQL与HDFS相互实战
    python控制负数以16进制整型格式输出
    SQL优化之深分页
    【微信小程序】2023年11月版本 关于小程序隐私保护指引设置的公告 | 修改微信小程序隐私保护 |小程序无法获取用户昵称 头像 性别 等问题
    reactHook实现EventBus
    【C语言】深入理解KMP算法及C语言实现
    tcp rst 情况
  • 原文地址:https://blog.csdn.net/web18484626332/article/details/126577827
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号