当前位置: 首页 > news >正文

记一次诡异的Cannot find declaration to go to,Cannot resolve method

记一次诡异的 Cannot find declaration to go to,
Cannot resolve method 'getOnExpressions' in 'Join'

对于项目中通常问题,清除缓存,重启idea,或者仔细检查语法通常都能解决问题,但是这次却失效了,以下是原因及解决方案。

项目中使用了mybatisplus的多租户拦截器,但是在拦截sql的时候却报jsqlparse解析错误,而且仅仅是部分sql报错,并非全部sql报错,很容易让人怀疑是自己业务方法有问题,检查无法找到问题,一度怀疑sql解析器不够强大,不支持自定义的特殊sql,但是项目sql又是简单的join连接并且仅仅取了个别名,解析器难道如此拉胯?当然后来阅读sql解析器源码发现其功能异常强大,这是后话;

点击进去mybatis-plus的多租户源码中,发现调用jsqlparser的一行报错,仔细检查业务,并未发现问题,

点进去报错的jsqlr源码中发现该行提示 Cannot find declaration to go to,
Cannot resolve method 'getOnExpressions' in 'Join',非常奇怪源码中怎么会有这样的提示?

这里是mybatis-plus的多租户源码,怎么会提示找不到jsqlparser呢?但是点进去调用的类中明明能够看到调用的方法却找不到,

可以看到源码中这两行是标红的,但是点进去join后明明却又可以看到getOnExpression()方法

细心的你可能会发现少了个s,

于是清除缓存,重启idea,仍旧无济于事;

后猜想可能是jsqlparse不够强大,不支持自定义sql,但是debug后发现jsqlparse超乎想象的强大;

最后猜想可能是jar包冲突,而实际原因也确实是jar冲突,以下是排查思路:

1)找到join所在jar包,同时找到TenantLineInnerInterceptor所在jar包,发现如下两个:

<dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><version>3.5.1</version></dependency><dependency><groupId>com.github.jsqlparser</groupId><artifactId>jsqlparser</artifactId><version>4.0</version></dependency>

于是猜想通常官方starter会做版本仲裁,可能该starter中已经包含了jsqlparser的jar包了,于是点进去果然发现了4.3版本的jar包,但是项目中却又引入了4.0版本的,所以果断将4.0的删除,发现原来提示Cannot find declaration to go to,
Cannot resolve method 'getOnExpressions' in 'Join'   的地方已经恢复了正常;

2)对于项目中其它引用4.0的代码切换为4.3的,并且重写部分报错的业务,至此完美解决;从这里也能看到是因为版本差异导致的

后记:对于项目中其它所有有版本冲突的地方,都可以采用此方法来进行仲裁排除;

适当阅读源码,debug源码,受益匪浅。

相关文章:

记一次诡异的Cannot find declaration to go to,Cannot resolve method

记一次诡异的 Cannot find declaration to go to&#xff0c; Cannot resolve method getOnExpressions in Join 对于项目中通常问题&#xff0c;清除缓存&#xff0c;重启idea&#xff0c;或者仔细检查语法通常都能解决问题&#xff0c;但是这次却失效了&#xff0c;以下是原…...

智慧园区:AI边缘计算技术与视频监控汇聚平台打造智慧园区解决方案

一、行业趋势与背景 智慧园区是现代城市发展的重要组成部分&#xff0c;通过智能化技术提高园区的运营效率、降低成本、增强环境可持续性等具有重要作用。在智慧园区中&#xff0c;人工智能和视频汇聚技术是重要的前置技术。人工智能技术可以实现对数据的智能化处理和分析&…...

SpringCloud(17~21章):Alibaba入门简介、Nacos服务注册和配置中心、Sentinel实现熔断与限流、Seata处理分布式事务

17 SpringCloud Alibaba入门简介 17.1 why会出现SpringCloud alibaba Spring Cloud Netflix项目进入维护模式 https://spring.io/blog/2018/12/12/spring-cloud-greenwich-rc1-available-now 说明 Spring Cloud Netflix Projects Entering Maintenance Mode 什么是维护模…...

Jmeter安装与测试

目录 一&#xff1a;JMeter简介&#xff1a; 二&#xff1a;JMeter安装与配置 三&#xff1a;JMeter主要原件 一&#xff1a;JMeter简介&#xff1a; JMeter&#xff0c;一个100&#xff05;的纯Java桌面应用&#xff0c;由Apache组织的开放源代码项目&#xff0c;它是功能 …...

java开发环境从0开始 【汇总版】

java开发环境从零开始 第一步&#xff1a;jdk第二步&#xff1a;安装 mysql第三步:安装maven第四步&#xff1a;idea最新免费安装第五步&#xff1a;安装navicate第六步 &#xff1a;安装git&#xff0c; 第一步&#xff1a;jdk 第一步当然是最先安装java开发环境啦。 看这个链…...

线性代数的本质(九)——二次型与合同

文章目录 二次型与合同二次型与标准型二次型的分类度量矩阵与合同 二次型与合同 二次型与标准型 Grant&#xff1a;二次型研究的是二次曲面在不同基下的坐标变换 由解析几何的知识&#xff0c;我们了解到二次函数的一次项和常数项只是对函数图像进行平移&#xff0c;并不会改变…...

STM32WB55开发(4)----配置串口打印Debug调试信息

STM32WB55开发----4.配置串口打印Debug调试信息 概述硬件准备视频教学样品申请选择芯片型号配置时钟源配置时钟树RTC时钟配置查看开启STM32_WPAN条件配置HSEM配置IPCC配置RTC启动RF开启蓝牙开启串口调试配置蓝牙参数设置工程信息工程文件设置Keil工程配置代码配置结果演示 概述…...

云原生服务无状态(Stateless)特性的实现

文章目录 为何要使用无状态服务&#xff1f;无状态服务的实现方法1. 会话状态外部化2. 负载均衡3. 自动伸缩4. 容器编排5. 数据存储6. 安全性 示例&#xff1a;使用Spring Boot实现无状态服务结论 &#x1f389;欢迎来到云计算技术应用专栏~云原生服务无状态&#xff08;Statel…...

zookeeper最基础教程

文章目录 一、简介1、工作机制2、特点3、数据结构4、应用场景5、选举机制 二、软件安装1、单机版安装2、集群安装3、配置参数解读(zoo.cfg)4、ZK集群启动脚本 三、命令行操作1、语法2、使用3、节点相关4、监听器原理5、节点删除与查看 三、写数据流程 一、简介 1、工作机制 官…...

又一重磅利好来袭!Zebec Payroll 集成至 Nautilus Chain 主网

流支付协议 Zebec Protocol 正在积极的拓展自身生态&#xff0c;随着此前其全新路线图的发布&#xff0c;揭示了该生态从 Web3 世界向 Web2 世界跨越的决心。根据其最新路线图&#xff0c;Zebec Protocol 正在从最初构建在 Solana 上的流支付协议&#xff0c;拓展为囊括模块化公…...

NLP模型的tokenize方法中return_tensors参数

NLP模型的tokenize方法中return_tensors参数 在许多NLP模型的tokenize方法中,return_tensors参数可以指定tokenize之后返回的张量类型,常见的可选值包括: ‘tf’: 返回TensorFlow的张量对象Tensor。 ‘pt’: 返回PyTorch的张量对象torch.Tensor。 ‘np’: 返回NumPy的ndarray对…...

模方新建工程时,显示空三与模型坐标系不一致怎么解决

答:检查空三xml与模型的metadata.xml的坐标系是否一致&#xff0c;metadata文件是否有在data目录外面。 模方是一款针对实景三维模型的冗余碎片、水面残缺、道路不平、标牌破损、纹理拉伸模糊等共性问题研发的实景三维模型修复编辑软件。模方4.0新增单体化建模模块&#xff0c;…...

氧化锌避雷器绝缘电阻测试

氧化锌避雷器 绝缘电阻测试 试验目的 避雷器绝缘电阻包括本体绝缘电阻和底座绝缘电阻, 主要目的在于初步检查避雷 器内部是否受潮; 有并联电阻者可检查其通、 断、 接触和老化等情况。 试验设备 高压绝缘电阻测试仪 厂家&#xff1a; 湖北众拓高试 试验方法 本体绝缘电阻试验…...

链动2+1系统开发

什么是链动21模式&#xff1f; 链动21主要是一个集团队搭设、快速提升产品销量&#xff0c;与消费者做到合作共赢的一个商业模式&#xff0c;让用户在享受购物折扣的同时&#xff0c;也能获得相对收益&#xff0c;同时公司也能达到产品快速销售这样的一个目的&#xff0c;而链…...

AIGC(生成式AI)试用 4 -- 从模糊到精确

从模糊到精确&#xff0c;也许差异在于 更多的描述&#xff0c;更多的信息更具像的描述&#xff0c;更多的数据&#xff0c;更有效的信息主题明确和目标清晰层次感与条理性更简洁清晰的逻辑 “说清楚点&#xff0c;不太明白&#xff0c;提供更多的信息也许能知道要做什么。” …...

Linux中使用Docker安装ElasticSearch7.10.x集群

使用Docker安装ElasticSearch7.10.x单节点请访问这里 一、集群环境说明 服务器IP地址192.168.137.1&#xff0c;192.168.137.2&#xff0c;192.168.137.3 二、前期准备 1. 拉取镜像 docker pull elasticsearch:7.10.12. 首先需要创建一个用于生成秘钥的初始容器&#xff0…...

electron 左上角图标 dev(开发环境)可显示 build(打包)后无法显示

先说解决方法&#xff0c;用于作为图标的ico文件需要富集多种尺寸&#xff0c;必须包含256*256&#xff0c;且同时应当包含其他更小的尺寸。 例如&#xff1a; 接下来解释一下这么做的原因 ico是Iconfile的缩写&#xff0c;是Windows计算机中的一种图标文件格式&#xff0c;…...

全球与中国BGO晶体市场:增长趋势、竞争格局与前景展望

BGO晶体&#xff0c;全名为Bismuth Germanate Scintillation Crystal&#xff08;铋锗酸盐闪烁晶体&#xff09;&#xff0c;是一种用于探测放射性粒子和射线的闪烁晶体材料。它的主要成分是铋氧化物&#xff08;Bi4Ge3O12&#xff09;&#xff0c;其中铋和锗的特性使得这种晶体…...

华三路由交换技术基础——计算机网络基础

计算机网络&#xff1a; 定义&#xff1a;一组具有自治权的计算机互联的集合 作用&#xff1a; 1.共享信息资源 2.分解式处理信息 4.负载均衡 5.综合信息服务 它是计算机技术与通信技术的两个领域的结合 一&#xff0c;计算机网络中的基本概念&#xff1a; 局域网&#xff…...

Docker搭建RK3568开发环境

推荐&#xff1a;Ubuntu 20.04 版本 Docker加速 # 编辑 Docker 配置文件 $ sudo vim /etc/docker/daemon.json# 加入以下配置项 {"registry-mirrors": ["https://dockerproxy.com","https://hub-mirror.c.163.com","https://mirror.baidu…...

【GAMES202】Real-Time Ray Tracing 1—实时光线追踪1

一、前言 这篇我们开始新的话题—Real-Time Ray Tracing简称RTRT&#xff0c;也就是实时光线追踪&#xff0c;关于光线追踪&#xff0c;我们已经不止一次提到过它的优点&#xff0c;无论是软阴影还是全局光照&#xff0c;光线追踪都很容易做&#xff0c;唯一的缺点就是速度太慢…...

Linux修复损坏的文件系统

如何判断文件系统是否损坏 当文件系统受损时&#xff0c;将会出现一些明显的迹象。例如&#xff0c;文件或文件夹无法访问、文件大小异常、系统启动慢或无法启动等。此外&#xff0c;系统也可能发出一些错误信息&#xff0c;如"Input/output error"、"Filesyst…...

三分钟学会一个新技能——使用Java操作Redis

目录 1、前置准备操作 1.1、为什么要进行前置准备操作 1.2、本地如何访问到云服务上Redis的6379端口号 1.3、配置步骤&#xff1a; 2、配置后本地主机如何操作 3、常用命令举例 3.1、通用命令举例 3.2、string相关命令举例 3.3、hash相关命令举例 3.4、list相关命令…...

Java学习笔记------内部类

内部类的定义&#xff1a; 在一个类的里面再定义一个类 内部类的使用场景&#xff1a; 内部类表示的事物是外部类的一部分&#xff08;B类表示的事物是A类的一部分&#xff0c;且B单独存在没有意义&#xff09;内部类单独出现没有任何意义 内部类的访问特点 内部类可以直接…...

面试题:问js的forEach和map的区别

前端面试题库 &#xff08;面试必备&#xff09; 推荐&#xff1a;★★★★★ 地址&#xff1a;前端面试题库 【国庆头像】- 国庆爱国 程序员头像&#xff01;总有一款适合你&#xff01; 前言 为什么要写这么一篇文章&#xff0c;原因是今天下午水群的时候&…...

Hadoop设置固定ip无效的解决办法

今天配置Hadoop的时候&#xff0c;执行vi /etc/sysconfig/network-scripts/ifcfg-ens33修改网络配置文件后&#xff0c;一切正常&#xff0c;但重启后IP改变了&#xff0c;并且在修改以及重启网络连接数次后&#xff0c;IP依旧不按照我在ifcfg-ens33中配置的那样&#xff0c;检…...

论文解读 | 用于3D对象检测的PV-RCNN网络原创

原创 | 文 BFT机器人 01 背景 本文的背景涉及到3D物体检测&#xff0c;这是一个在自动驾驶和机器人等领域应用广泛的重要问题。在这些领域&#xff0c;LiDAR传感器被广泛用于捕捉3D场景信息&#xff0c;生成不规则且稀疏的点云数据。这些点云数据提供了理解和感知3D场景的关键…...

kali安装volatility及插件mimikatz

1.准备工作 kali安装pip2 wget https://bootstrap.pypa.io/pip/2.7/get-pip.py python2 get-pip.py 查看pip2版本 python2 -m pip -v pip2安装升级 pip2 install --upgrade setuptools 安装2个库 pip2 install construct2.10.54 pip2 install pycryptodome 下载文件d…...

什么是阻塞队列?如何使⽤阻塞队列来实现⽣产者-消费者模型?哪个阻塞队列最常用?

阻塞队列 阻塞队列(Blocking Queue)是一种特殊类型的队列,它具有阻塞特性,即当队列为空时,试图从队列中取出元素的操作会被阻塞,直到队列中有元素可取。同样,当队列已满时,试图将元素放入队列的操作也会被阻塞,直到队列有空闲空间。 JDK 7引入了7个阻塞队列,它们都…...

Bean拷贝组件(注解驱动)方案设计与落地

一、背景 数据流转在各层之间的过程&#xff0c;应当是改头换面的&#xff0c;字段属性数量&#xff0c;属性名称&#xff08;一般不变&#xff0c;但也有重构时出现变化的情况&#xff09;&#xff0c;类型名称&#xff08;普遍变化例如BO、VO、DTO&#xff09;。对于转换的业…...

清河网站建设设计费用/泉州关键词排名工具

MySQL 5.5 版本&#xff0c;编译安装使用 cmake 。cmake 安装之前&#xff0c;如果已经运行过 cmake&#xff0c;尝试运行下面的命令来避免冲突&#xff0c;# make clean# find / -iname "cmakecache.txt" | rm 编译安装的时候&#xff0c;需要指定 DDEFAULT_CHARET…...

备案用网站建设方案书/千锋教育学费一览表

TCP网络程序设计是指利用Socket类编写通信程序。利用TCP协议进行通信的两个应用程序是有主次之分的&#xff0c;一个称为服务器程序&#xff0c;另一个称为客户机程序&#xff0c;两者的功能和编写方法大不一样。 1、InetAddress类 java.net包中InetAddress类是与IP地址相关的类…...

led灯什么网站做推广好/新疆今日头条新闻

本文为英国兰开斯特大学兰开斯特环境中心&#xff08;作者&#xff1a;Ce Zhang&#xff09;的博士论文&#xff0c;共267页。 近年来&#xff0c;随着传感器技术的发展&#xff0c;人们每天都要采集大量非常精细空间分辨率&#xff08;VFSR&#xff09;的遥感图像。这些VFSR图…...

公司做网站的价格江阴/汕头网站建设方案开发

上篇文章《51单片机实现单极性spwm原理详解》已经详细介绍如何模拟单片机用代码在matlab-simulink中实现spwm调制&#xff0c;本文继续利用上文中的代码进行仿真&#xff0c;驱动单相全桥逆变器。首先对代码作部分修改&#xff0c;上述代码中默认正弦波与调制波幅值都是250&…...

竖排导航网站/今日新闻7月1日

经排查是因为虚拟机&#xff08;Redis放在了虚拟机中&#xff09;的防火墙没关 关闭方法-centos7 暂时关闭防火墙 systemctl stop firewalld查看防火墙状态 systemctl status firewalld绿点变灰点说明关闭...

wordpress 在线测试插件/制作网站公司

有趣的数 &#xff08;20 分&#xff09; 文章目录有趣的数 &#xff08;20 分&#xff09;1. 题目描述2. 输入格式3. 输出格式4. 输入样例5. 输出样例6. 解题思路7. 代码实现8. 题目来源1. 题目描述 Notice that the number 123456789 is a 9-digit number consisting exactly…...