java.lang.NoSuchMethodError 原因和处理方案

2023-05-16

问题描述

工程中明明有该方法,却提示 java.lang.NoSuchMethodError 错误

1.原因

java 的类加载机制是把所有不同名称的本类和引用类的包全部加载到内存,这样就有一个问题,如果有两个类在JVM看来是完全一样的(包名和类名完全一样,即全限定名一样)怎么办,机器无法区分

举个栗子,
引用类,即引用别人包中的类(其包名:com.qq.dto):

public class Data(){
    public static getData(){
       System.out.println("引用类");
    }
}

本类,即自己写的类(其包名也是:com.qq.dto):

public class Data(){
    public static getData(){
       System.out.println("本类");
    }
    public static getDataOut(){
       System.out.println("本类");
    }
}

上述两个类在JVM看来是完全一样的(全限定名一样),JVM 只会加载一个类。如果先加载引用类,在调用 Data.getData 方法时,机器肯定先去使用引用类的 getData 方法,可实际需要调用本类的方法,这样肯定就会出错,如果调用想调用本类的 Data.getDataOut方法,因为内存加载的是引用类,就会发生找不到方法的错误。

2.解决

最简单的解决就是全限定名不一样(改包名或类名),这样就可以完全区分开来。
可以用 mvn dependency:analyze,mvn dependency:tree 命令辅助分析加载包的顺序。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

java.lang.NoSuchMethodError 原因和处理方案 的相关文章

随机推荐

  • MRCP 媒体资源控制协议

    媒体资源控制协议 xff08 Media Resource Control Protocol MRCP xff09 是一种通讯协议 xff0c 用于语音服务器向客户端提供各种语音服务 如语音识别和语音合成 MRCP并不定义会话连接 xff0
  • Hadoop中VIntWritable编码方式解析

    最近因为实验室的云计算项目 xff0c 开始学习Hadoop xff0c 有时间就记录一下自己在学习过程中的一些小收获吧 Hadoop权威指南 在序列化这一节有个例子程序 xff0c 叫做TextPair xff0c 代码略长 xff0c
  • 测试分析报告

    测试分析报告 1 引言 1 1 1 编写目的 1 1 2 背景 1 1 3 定义 2 1 4 参考资料 2 2 测试概要 2 3 测试结果及发现 3 3 1 测试 1 xff08 normal xff09 3 3 2 测试 2 xff08
  • MapReduce中的二次排序

    在MapReduce操作时 xff0c 我们知道传递的 lt key value gt 会按照key的大小进行排序 xff0c 最后输出的结果是按照key排过序的 有的时候我们在key排序的基础上 xff0c 对value也进行排序 这种需
  • 基于哈夫曼编码的文件压缩解压

    这个程序是研一上学期的课程大作业 当时 xff0c 跨专业的我只有一点 C 语言和数据结构基础 xff0c 为此 xff0c 我查阅了不少资料 xff0c 再加上自己的思考和分析 xff0c 实现后不断调试 测试和完善 xff0c 耗时一周
  • Errors were encountered while processing 解决方法

    在执行更新或者安装软件命令时 sudo apt get upgrade sudo apt get install 遇到 xff1a Errors were encountered while processing 查看错误信息发现 xff1
  • JSON传list数据到springMVC后台并用对象接收

    在项目中经常获取前台table中的数据 然后拼接传向后台 之前一直按照JSON格式拼接 但是非常容易出问题 而且遇到了类似List lt beans gt list 这样的参数 springMVC转化为对象会报错 正确的做法是按下面这种做法
  • Java解析网络数(Json)运用CloseableHttpClient

    最近做用Java网络爬取数据的部分 xff0c 发现在使用Apache的httpclient的时候 xff0c 发现Idea提示DefaultHttpClient等常用的类已经不推荐使用了 现在运用 CloseableHttpClient
  • 【Linux】Ubuntu18.0.4安装wine 失败遇到的问题和解决的思路 尝试覆盖共享/usr/share/doc/ 处理时有错误 /tmp/apt-dpkg-install-6NvbtI/

    bug说明 xff1a dpkg 处理归档 var cache apt archives libattr1 1 2 4 47 2 amd64 deb unpack 时出错 xff1a 尝试覆盖共享的 usr share doc libatt
  • 算法模型---时间序列模型

    文章来源 时间序列 时间序列是时间间隔不变的情况下收集的不同时间点数据集合 xff0c 这些集合被分析用来了解长期发展趋势及为了预测未来 时间序列与常见的回归问题的不同点在于 1 时间序列是跟时间有关的 而线性回归模型的假设 xff1a 观
  • java: 找不到符号 符号: 类 BASE64Encoder 位置: 程序包 sun.misc

    1 问题 新项目编译报错如下 xff1a java 找不到符号 符号 类 BASE64Encoder 位置 程序包 sun misc 2 解决方案 依图如下 xff0c 修改jdk对应的版本即可
  • tar 打包隐藏文件

    前言 xff1a 先说一下遇到的场景 xff1a 前段时间在配合做 DevOps xff0c 组内有块代码是 php 的 xff0c 需要用 tar 命令打包归档上传到 nexus 库 xff0c 后来发现解压出来的包居然缺失了隐藏文件 x
  • The server selected protocol version TLS10 is not accepted by client preferences [TLS12] 报错处理

    一 问题描述 xff1a 项目工程需求要连接 SqlServer 服务器 xff0c 但是报错了 xff0c 完整错误如下 xff1a com microsoft sqlserver jdbc SQLServerException 驱动程序
  • 23种设计模式

    目录 创建型 1 Factory Method xff08 工厂方法 xff09 2 Abstract Factory xff08 抽象工厂 xff09 3 Builder xff08 建造者 xff09 4 Prototype xff08
  • SpringBoot开启异步多线程

    前言 xff1a SpringBoot 的异步多线程需要从 java 的多线程基础说起 xff0c 可以参考 java 多线程实现的三种方式区别 SpringBoot 在此基础上进行了多次封装 xff0c 所以使用起来非常方便 一 核心参数
  • 制作 java-sdk 的两种方式

    前言 xff1a 平时maven工程里 pom 中的引用的依赖就是别人开发好的 sdk 包 xff1b 工作中为了方便一些开发也需要自定义开发 sdk 包 xff0c 下面介绍下怎么开发 一 两种方式 我们平时引用 sdk 有两种方式 xf
  • SpringBoot 之 AOP

    前言 xff1a Spring 三大核心思想是啥 xff0c 还记得不 xff1f IOC xff08 控制反转 xff09 xff0c DI xff08 依赖注入 xff09 xff0c AOP xff08 面向切面编程 xff09 回顾
  • mongodb 的常用数据操作

    摘要 xff1a 主要记录一些常见 的mongodb 的增删改查 xff0c 方便以后查阅 1 增 基本格式 xff1a db test doc insert 或 db test doc save 样例 xff1a db test doc
  • Python键盘输入转换为列表

    Python输入字符串转列表是为了方便后续处理 xff0c 这种操作在考试的时候比较多见 1 在Python3 0以后 xff0c 键盘输入使用input函数 eg1 span class hljs prompt gt gt gt span
  • java.lang.NoSuchMethodError 原因和处理方案

    问题描述 工程中明明有该方法 xff0c 却提示 java lang NoSuchMethodError 错误 1 原因 java 的类加载机制是把所有不同名称的本类和引用类的包全部加载到内存 xff0c 这样就有一个问题 xff0c 如果