错误:Attempt to resolve method: [XXX方法] on undefined variable or class name: [XXX类]的解决(IDEA打包jar问题)
问题:
使用JMeter调用jar包的时候,报错误信息Typed variable declaration : Attempt to resolve method:[XXX方法] on undefined variable or class name: [XXX类]。意思是XXX类中没有找到定义的XXX方法。
这看着是一个JMeter的使用jar问题,但事实上是IDEA的jar打包问题!
解决思路:
通常的解决方法:
1、确认是否引入jar包。在测试计划 → Add directory or jar to classpath 中引入jar包。
2、确认是否引入对应的类。在BeanShell PreProcessor → Script 的开头写对应的import,如import com.demo.XXX;。

3、确认引用的类名、方法名是否正确。
仔细看了一遍引用的包、类名、方法名,都没问题。开始怀疑是打包的jar有问题,我是用IDEA打的包叫Des,为了区分,之前用MyEclipse比较多,于是用MyEclipse重新打了个包叫DesUtil,神奇的事情发生了,JMeter引用后发现没有问题!!!
于是,本着技术宅的执着,开始对比两个jar包,研究了好久,才发现其中的两个奥秘(两个深坑)!首先用反编译工具打开jar包,其实之前我调不通的时候我也打开jar包看过,发现目录结构并没有问题,这样看确实是一模一样的,如图:
IDEA打包的
====================我是分割线====================
MyEclipse打包的
这里其实有第一个坑,很平常的目录结构,看着是一样。而事实上,这两个包的目录结构是不一样的。我们解压两个jar看他的目录。
IDEA打包的
====================我是分割线====================
MyEclipse打包的
发现没有,两个目录层级其实是不一样的,IDEA打包的文件夹叫“com.demo”,明显是有问题的,并没有层级关系。然而这个差异,在反编译工具里是看不出来的,可以对比前面反编译工具里的2张图。
那么新的问题来了,为啥IDEA打包的文件夹会变成“com.demo”呢?仔细研究发现,是导出jar的配置有问题,MyEclipse导出jar包时,路径是不需要我们创建的,而IDEA的jar包路径是要我们手动创建的。这时候第二个坑就来了!首先IDEA中,如果要建两层包的结构是可以直接用“com.demo”这样的方式命名包的,会出现两层结构,如图:
创建包:
文件夹显示:
项目工程中显示:
可以看到,当文件夹没有其他文件时,项目工程里就是这么显示的。但是!导出jar的时候是不能以这种方式命名包的,即使包下面没有其他文件了。如果用这样的方式,就会出现刚的问题,文件夹名称变成了“com.demo”。两种命名方式,包的层级结构是不一样的,如下图两个红框所示:

解决方法:
所以正确的方式是,按如下建立目录结构,然后导出jar包。问题解决!

PS:主要是项目中和反编译工具中,包的层级显示,容易让人产生误解。(其实是告诉我们建包时不要偷懒,哈哈哈)。
错误:Attempt to resolve method: [XXX方法] on undefined variable or class name: [XXX类]的解决(IDEA打包jar问题)的更多相关文章
- VB 错误日志:MSForms.CommandButton 不是一个已加载的控件类等解决方法
是由于缺少了fm20.dll这个必要组件 网上找到 然后在工程中引用 找到路径 完美解决
- Qt错误:类中使用Q_OBJECT宏导致undefined reference to vtable for "xxx::xxx"错误的原因和解决方法
在进行Qt编程的时候,有时候会将类的定义和实现都写在源文件中,如果同时在该类中使用信号/槽,那么可能就会遇到 undefined reference to vtable for "xxx:: ...
- 现有语言不支持XXX方法
史上最强大的IDE也会有bug的时候哈,今天遇到这个问题特别郁闷,百度了下,果然也有人遇到过这个问题 解决方法: 1.调用的时候参数和接口声明的参数不一致(检查修改) 2.继承接口中残留一个废弃的方法 ...
- Android NDK 【错误】The method loadLibrary(String) is undefined for the type Settings.Syste
[错误]The method loadLibrary(String) is undefined for the type Settings.System [解决方法] 不要加入包import andr ...
- SVN各种错误提示产生原因及处理方法大全(转)
SVN各种错误提示产生原因及处理方法大全 1. svn: Server sent unexpected return value (500 Internal Server Error) in resp ...
- attempt to call method 'getDataString' (a nil value)
错误: LUA ERROR: [: attempt to call method 'getDataString' (a nil value) 在合并cocos和quick的时候,在EventCusto ...
- SVN各种错误提示产生原因及处理方法大全
SVN各种错误提示产生原因及处理方法大全 SVN各种错误提示产生原因及处理方法大全 1. svn: Server sent unexpected return value (500 Internal ...
- okhttp封装时,提示 cannot resolve method OkHttpClient setConnectTimeout() 函数
如标题所示,okhttp封装时,提示 cannot resolve method OkHttpClient setConnectTimeout() 函数,有遇到这样现象的朋友吗? 原因:因使用的是 ...
- SpringMVC中出现" 400 Bad Request "错误(用@ResponseBody处理ajax传过来的json数据转成bean)的解决方法
最近angularjs post到后台 400一头雾水 没有任何错误. 最后发现好文,感谢作者 SpringMVC中出现" 400 Bad Request "错误(用@Respon ...
随机推荐
- python自动化第二课 - python基础2
1.判断奇数偶数 num = input("请输入一个数字,判断是否为偶数:") print(not int(num) % 2) 2.浮点数的高精度计算用Decimal(from ...
- 026.掌握Service-外部访问
一 集群外部访问 由于Pod和Service都是Kubernetes集群范围内的虚拟概念,所以集群外的客户端默认情况,无法通过Pod的IP地址或者Service的虚拟IP地址:虚拟端口号进行访问.通常 ...
- PHP8年开发经验原创开发文档教程
订阅微信公众号: gzgwgas 每天为你分享PHP开发经验,坚决不踩坑,坚决不入坑. 微信扫码,关注公众号有惊喜!
- 为什么你学习了scrum之后还不会实施敏捷? (敏捷学习之旅一)
标题党, 其实这个主题改为"如何能快速的学习与实施敏捷"更贴切. 我在一家大型的外资金融企业,公司最近在大面积的实施敏捷转型,我的团队首先被选为试点团队,并实施得很好,最近我也和不 ...
- 使用synchronized修饰静态方法和非静态方法有什么区别
前言 最近被问到了这个问题,第一次回答的也是很不好,在此参考网上答案进行整理记录.供大家学习参考. Synchronized修饰非静态方法 Synchronized修饰非静态方法,实际上是对调用该方法 ...
- vux中表单验证,在提交时自动聚焦到未验证通过的那栏;及循环表单的验证
首先vux中的表单验证在点击触发,失焦时才显示错误信息,如果不管它,它就没反应,这显然是不合理的:解决办法就是:在提交时做验证,不通过的话就使用.focus()及.blur()方法给它聚焦,失焦. i ...
- javaScript 基础知识汇总 (十五)
1.模块简介 什么是模块: 模块就是一个文件,一个脚本,通过关键字export 和 import 交换模块之间的功能. export 关键字表示在当前模块之外可以访问的变量和功能. import 关键 ...
- ipadmini从9.3.5降级8.4.1并完美越狱
ipadmini之前是iOS9.3.5实在是卡的用不了,于是打算降级,但是尝试了包括改版本描述等很多方法一直失败.今天突然成功降级8.4.1并且完美越狱,运行流畅了非常多.赶紧发个教程,回馈一下网友. ...
- Docker容器中使用Redis
加载镜像 查询官方镜像及其版本信息 $ docker search redis 加载最新镜像 $ docker pull redis:lastest 查看本地镜像 $ docker images RE ...
- AutoJS4.1.0实战教程 ---火热持续更新中
这个时代假货太多,虚假广告更是充斥着整个互联网.尤其是那个传奇的我都无语了.好几个明xing代言,问题是太假了……我好奇的是那么虚假怎么就没人管呢,XX部干嘛呢……另外互联网刷视频赚钱就是个炒作.几百 ...