同包同名的类的时候,使用哪个,哪个优先

【Mybatis小白从0到90%精讲】17:Mybatis Mapper XML必须同包同名吗?mappers配置的4种方式详解 对于Mybatis Mapper,通常都是 Java接口与Mapper.xml 同包同名,那么是否必须同包同名? 实际上并不是必须,对于Mapper的配置,是在全局配置文件 mybatis-config.xml 中 通过mappers标签配置的,提供了以下4种配置方式!最后附上源码求证截图! 阅读详情

 

同包同名的类的时候,使用哪个,哪个优先

2018-04-12 myth 菜小白的奋斗日常

项目A,它是一个web项目(使用spring开发,tomcat下部署,提供jsp页面,供用户使用),会引入产品包,暂且用product.jar来代替产口包吧吧。web项目最后会打成war包来部署。

项目B,它呢,不需要页面,换言之,它也是web项目(使用spring开发,tomcat下部署),只是单纯的引入spring的定时任务来处理业务数据。说到底,它也是一个web项目,只不过不需要html,jsp这些东东,类似于windows里的服务吧,不需要有GUI窗口。它最终也是打成war包来发布。但是,和项目A的不同之处在于它需要把项目A,先打成JAR包,然后放在项目B中引用。这么想像或许可以更为直接:项目A中,定义了好多实体类,然后在项目B中引入项目A的JAR包,这么说理,便顺理成章了。

说到这里,介绍了两个项目之间的关系。那么,问题也就随之而来了:

 

 

 

同包同名的类,会先加载哪个呢???

 

同样的问题,我们在开发中经常会引入第三方的JAR,很有可能会出现同名字的类(这里是指同包,同类),那么JVM是怎么样决定使用哪个的呢?

做个试验:

在Eclipse里面创建一个工程:

1. 在工程里面创建一个包,下面创建一个类.

2. 将此工程打包成a.jar.

 

3. 然后,将该a.jar添加到当前工程中作为依赖..

4. 然后,在当前项目中,再在相同包路径下,创建一个Order类.

5.在工程中创建一个测试类.

6.执行测试,我们发现输出:

 

 

结果显示,用的是项目里的。第一个问题:为什么是用的项目里的呢?第二个问题:能不能告诉eclpise用JAR文件里的呢?

 

先来回答第二个问题,是可以的。可以告诉eclipse用JAR里的。具体做法如下

 

如题所示,只要让a.jar,处理列表中的第一条即可。选中a.jar,点击右侧的top即可。然后再运行一下,就会发现用的是JAR文件里的了。

 

再来回答第一个问题:为什么会这样呢?

长话短说,这个和类加载器用关。即classloader。

 

再抛出一个问题,这是在eclipse中可以指定顺序,如果是在tomcat里运行,lib目录下一大堆的JAR包,怎么指定顺序啊?

 

-cp参数用于指定classpath目录。先指定谁,加载的时候,就先加载谁.,这就是为什么eclipse里可以指定顺序。

如果是在tomcat里运行,lib目录下一大堆的JAR包,怎么指定顺序啊?

通过实验得出,根JAR文件的文件名有关。按照字母的顺序加载JAR文件。有了这个类以后,后面的类则不会加载了。具体的可以自己做实验。

 

 

把 ST03 的历史数据留得更久:ABAP Workload 统计保留期设置、原理与落地避坑指南 SAP ST03性能数据保留期配置指南 ST03/ST03N是SAP系统性能分析的核心工具,但默认数据保留期通常较短(3个月左右),难以满足跨季度对比、年度规划等需求。本文详细解析了ST03数据保留期的配置方法及注意事项: 数据存储机制:性能数据存储在监控库中,通过定期重组作业清理过期数据 配置路径:7.0+系统在"Workload Collector Database→Reorganization→Control"中按Profile分别设置 关键限制:保留期最大值建议不超过99,否则可 阅读详情

相关推荐

Android-S无线模块前瞻

WiFi - mainlane非强制 S 采用反射的方法直接加载wifiservice,直接hook在systemserver上,无编译依赖。gms可以动态替换wifi服务。 R 采用直接启动service的方式,wifiservice仍然map在systemserver上。 WiFi - 11ad接口支持 11ad被wifi联盟商业化为WIGIG,提供短距的60GHZ载波,理论速度为当前5G 11ac的6倍。市面上基本没有手机支持,需要独立的芯片支撑此功能。 传输距离为3m以内,外界d.

头铁的伦的博客 1042

java如何实现覆盖jar包中的方法

其实实现起来很简单,就是创建一个和 jar 包中需要重写类的路径,类名完全一样的类,然后复制 jar 包中原类的全部方法到 jar 包外新建的类中,根据业务逻辑的需要改写用到的那个方法的业务逻辑或者新增方法来实现自己需要的业务逻辑,因为 jar 包外代码的优先级高于maven 依赖 jar 包的优先级,这个时候重写的这个类就会生效了。

huang_shuai_hs的博客 3798

避开地图定位偏差!手把手教你用Python实现火星坐标与WGS84精准转换

本文深入解析了国内地图服务中火星坐标(GCJ-02)与国际标准WGS84坐标系之间的偏差问题,并提供了基于Python的精准转换解决方案。文章详细阐述了坐标转换的核心原理,手把手教你构建可复用的转换工具包,并演示如何将其集成到实际应用(如Flask API)中,帮助开发者和数据分析师有效解决地图定位不准、多源数据无法对齐的痛点,提升地理信息处理能力。

weixin_29250403的博客 123

maven 引入存在相同类路径,类名的jar,在使用中是否有优先顺序

在引入的连个jar中,有相同类路径,类名的类 在pom文件中,按照这样的顺序引入 这两个jar中,都有 SearchGoodVo 这个类,并且类路径相同 suning-common 多了个 private String[] codeMerchantArr; 属性 common 在使用中,安照这样的顺序,是可以使用设个属性的 把pom文件一如jar的顺序颠倒...

qq_31683775的博客 5089

【CIC-IDS数据集+机器学习】实现网络流量异常检测

本项目基于CIC-IDS数据集,使用多种机器学习算法实现网络流量异常检测系统。项目采用了完整的机器学习工作流程,从数据预处理到模型部署,实现了高精度的网络入侵检测。

XiaoMu_001的博客 1934

特征拼接(Feature Concatenation)技术全景解析

特征拼接是深度学习中的核心特征融合技术,通过在指定维度连接不同来源的特征张量,创造性地解决了多源、多尺度特征融合的关键挑战。这种简单却强大的操作已成为现代神经网络架构设计的基石。

浩瀚之水的专栏 1639

java工程重写jar包中class类覆盖问题

拓展:tomcat容器中类加载顺序:https://blog.youkuaiyun.com/HQqHQhqqhq/article/details/127126453。重复的类只加载一次,加载我们复写后的类后就不会在加载lib 目录下的jar包。结论:直接在程序中复写jar中的类即可。

岑如花 1203

12、信号采样与Z变换的全面解析

本文全面解析了信号采样和Z变换的核心概念与应用。内容涵盖采样基础、采样频率与奈奎斯特率的关系、离散时间处理模拟信号的方法、采样率转换技术,以及Z变换的定义、性质、常见变换对和逆变换计算。通过实例分析和流程图展示,帮助读者深入理解数字信号处理的关键步骤,为相关领域的学习与应用打下坚实基础。

Jerry的专栏 118

不同的jar包内,有同包同名的class导致的noSuchMethod问题

事先声明:由于本人项目中的jar包都是本地jar,而都有用,属于第三方给我们挖的坑。 如果是maven仓库中的jar冲突,直接exclusion排除掉即可 同包同名的类SecurityEngineDeal存在,导致strServerCert= sed.getServerCertificate()报noSuchMethod的错误。 private void getpath(Object o){ Cl...

vvn_linux的博客 1314

面向企业架构师的 SAP BTP 全景实践:多云、账户、运行时与端到端开发路径

摘要:SAP BTP为企业提供多云、多运行时(Cloud Foundry/Kyma/ABAP Cloud)的数字化转型平台,支持快速构建扩展应用。关键选择包括:1)根据合规与性能选择区域;2)区分Trial(90天限制)与Free Tier(无期限)方案;3)按场景选择运行时(CF适合微服务/Kyma适合云原生/ABAP Cloud适合S/4HANA扩展)。建议优先使用Free Tier进行POC,并通过BTP Cockpit统一管理,实现从验证到生产的平滑过渡。(150字)

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 253

什么是 SAP Build Process Automation?

SAP Build Process Automation 是一款综合性的低代码工具,允许企业用户快速开发和自动化端到端业务流程。它整合了工作流管理、任务自动化和人工智能技术,提供了一个易于使用的平台,帮助企业更好地应对现代商业挑战。通过该工具,用户无需具备深厚的编程技能即可创建复杂的业务流程。例如,用户可以使用直观的拖放式界面设计流程、设置触发条件、定义任务分配规则,并通过内置的分析功能对流程效率进行评估。流程建模与设计:提供图形化界面,帮助用户直观地设计业务流程。任务自动化。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 1257

maven项目中对不同目录下的同包同名类的引用情况整理

test目录 > java目录 > 依赖中类 可以理解为单向的就近原则

wsx9172的博客 536

【Conda虚拟环境】新建 + 激活 + 安装 + 查看 + 退出 + 删除 + 复制 + 导出 + 导入 + 更改

(1)创建虚拟环境(2)激活虚拟环境(4)查看虚拟环境(3)退出虚拟环境(5)删除虚拟环境(6)复制虚拟环境(7)导出虚拟环境(8)导入虚拟环境(9)更改虚拟环境的安装路径(10)在指定路径下,配置虚拟环境

📷 图像处理践行者 | 传统算法 · 深度学习 · 多模态 | 分享实战经验与技术洞见,探索从像素到智能的无限可能。 4万+

JAVA导入不同包的同名类调用原则小结

使用不同包的同名类系统默认顺序: 这里将在com.testpackage包中尝试导入com.a.Test和com.B.Test,分析调用Test的具体包。 Test作为此次测试不同导入包的相同类名。 ·将要导入的包程序 com.a包编写以下程序: package com.a; public class Test { public int num1=1; } com.b包编写以下程序: pac...

weixin_45752941的博客 8429

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

Java中工程、包、类介绍

1. 说明 ①. 工程相当于一个软件,包相当于模块,类相当于模块下各个功能的实现。(学过python的同学更好理解,类似python下模块和方法) ②. 类下再有各种自己具体完成任务需要的成员变量和实现方法。主方法也在某一个public类中。 ③. 包(package)相当于姓名中的“姓”,类(class)相当于“名”。所以在调用某类方法的时候,不仅需要指明方法所在的“名”,即类,还要指明方...

嘉会的博客 1万+

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

maven 插件之 maven-shade-plugin,解决同包同名 class 共存问题的神器

开心一刻有一天螃蟹出门,不小心撞倒了泥鳅泥鳅很生气地说:你是不是瞎啊!螃蟹说:不是啊,我是螃蟹概述maven-shade-plugin 官网已经介绍的很详细了,我给大家简单翻译一下This plugin provides the capability to package the artifact in an uber-...

cnzzs的博客 887

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

两个jar里面有同包名同名的类,如何区分调用?

今天boss提了这样一个问题:在导入的两个jar包中有两个同包同类名的类,在调用时如何区分调用的是哪个? 以前学习时我们总是被告诫尽量避免同名类出现,没怎么了解这方面的问题。boss说只要将classpath中要调用的jar路径放在前面导入即可,不太理解。在网上查询后得知,这与JVM的加载有关:       包名类名都相同,那jvm没法区分了,一般ide是会提示发生冲突而报错的,如果不报错的,...

yi4011的专栏 1972

c++继承类中的同名成员变量和同名成员函数

在两个有继承关系的类中,出现了没有使用虚函数重写的同名函数,称此函数为重定义函数,同样还有重定义变量。在子类对象调用函数和赋值时,为了区分调用的函数和变量,通常使用域名作用符区分,如果不加作用域符,默认情况下谁的类声明的对象调用各自的函数和变量 #include <iostream> using namespace std; class A { public: int a; int...

weixin_43293737的博客 2027

不同包的两个同名类,同时导入一个类是报错,怎么办?

JAVA中不同包的两个同名类,同时导入一个类是报错,怎么办?问题描述解决办法 问题描述 在写爬虫时,同一个类中需要import org.jsoup.nodes.Document与org.bson.Document这两个类,但是报错了,同一个类中不能有两个同名的类。 解决办法 仅仅导入一个,或者不导入这两个包,需要调用时使用全部路径,即如下所示: org.jsoup.nodes.Document d...

weixin_43229107的博客 3009

java 覆盖 jar 包的 类_覆盖第三方jar包中的某一个类。妙!!

在我们日常的开发中,经常需要使用第三方的jar包,但是很多时候总是会发现第三方的jar包中的某一个类,有问题,但是又无法继承,因为你继承后 变成了你自己的,jar包中 调用的 还是 他自己内部包含的,如何能让 jar包中调用的类就是我们自己的呢,就是覆盖jar包中的某一个类。需求:京东的jar包中的 有一个类写错了,京东也不更新他的SDK,且他的SDK没有源码,这个时候的解决方案是:1. 找到错误...

weixin_39706441的博客 8094

Java之导包与同名类解决问题解决

Java导包语句:import 包名; 如果使用两个不同包的相同类,也就是当你像下面这样导包时会报错 //错误方式 import java.util.Date; import java.sql.Date; 应该改为下面这样,导包时改用.*,并且在使用Date类时指明是哪个包的类,前面加上包路径。 //正确方式 import java.util.Date; import java.s...

qq_38199295的博客 6996

JAVA CLASS PATH 的同名类加载顺序

java的classpath中如果出现了同名类,同名的类的代码不同,那只用的到底是哪一个类呢? java -cp ./;./classes;./xptest.jar com.ssc.xp.ws.TestClassLoaderA Java代码 packagecom.ssc.xp.ws; publicclassTestClassLoaderA{ ...

u010325193的博客 2656
上一篇: 反射详解
下一篇: 手动实现一个SpringMVC框架
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值