JMeter 3.3 一直说找不到类

Posted

技术标签:

【中文标题】JMeter 3.3 一直说找不到类【英文标题】:JMeter 3.3 keeps stating class not found 【发布时间】:2018-02-06 01:50:19 【问题描述】:

我看到多个问题都在问类似于我所问的问题,但由于某种原因,它对我不起作用。我正在使用 Jmeter 3.3 应用程序(目前是最新版本),因此该建议可能不适用于最新版本的 JMeter。

我正在尝试使用 JMeter 创建一个测试计划来测试我的数据库。

Database URL: jdbc:impala://server.domain.com:21050/default;auth=noSasl 
JDBC Driver class: com.cloudera.impala.core.ImpalaJDBCDriver

一个answer/advice 说将jar(在我的情况下为ImpalaJDBC4.jar)复制到lib 目录,然后重新启动JMeter,我这样做了。我也把它放在 lib/ext 目录中。但是,它仍然对我不起作用。我在 jmeter.log 中不断收到同样的错误:

Uncaught Exception java.lang.NoClassDefFoundError: Could not initialize class com.cloudera.impala.core.ImpalaJDBCDriver. See log file for details.

不确定路径是否重要,但我从以下位置运行 jmeter:

$ ~/tmp/apache-jmeter-3.3> bin/jmeter
   and from
$ ~/tmp/apache-jmeter-3.3/bin> jmeter

这里有什么我遗漏的吗?我把它放在 JMeter 的错误位置了吗?我知道驱动程序类在那里,因为我检查了 jar 文件的内容:

jar tvf ImpalaJDBC4.jar | less

2680 Thu Jan 04 08:11:12 PST 2018 com/cloudera/impala/core/ImpalaJDBCDriver.class

提前感谢您的帮助。我已经厌倦了用头撞墙。

这里是日志。我试图对其进行消毒,所以请忽略任何可能不正确的内容。

2018-02-05 17:14:05,321 信息 o.a.j.u.JMeterUtils:将语言环境设置为 en_US 2018-02-05 17:14:05,331 信息 o.a.j.JMeter:加载用户 属性来自: /Users/first.last/tmp/apache-jmeter-3.3/bin/user.properties 2018-02-05 17:14:05,332 信息 o.a.j.JMeter:从以下位置加载系统属性: /Users/first.last/tmp/apache-jmeter-3.3/bin/system.properties 2018-02-05 17:14:05,336 INFO o.a.j.JMeter:版权所有 (c) 1998-2017 Apache 软件基金会 2018-02-05 17:14:05,336 信息 o.a.j.JMeter: 版本 3.3 r1808647 2018-02-05 17:14:05,336 信息 o.a.j.JMeter: java.version=1.8.0_162 2018-02-05 17:14:05,336 信息 o.a.j.JMeter: java.vm.name=Java HotSpot(TM) 64 位服务器虚拟机 2018-02-05 17:14:05,336 信息 o.a.j.JMeter:os.name=Mac OS X 2018-02-05 17:14:05,336 信息 o.a.j.JMeter:os.arch=x86_64 2018-02-05 17:14:05,337 信息 o.a.j.JMeter:os.version=10.12.6 2018-02-05 17:14:05,337 信息 o.a.j.JMeter:file.encoding=UTF-8 2018-02-05 17:14:05,337 信息 o.a.j.JMeter:最大内存 =536870912 2018-02-05 17:14:05,337 信息 o.a.j.JMeter:可用处理器 =8 2018-02-05 17:14:05,340 信息 o.a.j.JMeter:默认语言环境=英语(美国)2018-02-05 17:14:05,340 信息 o.a.j.JMeter:JMeter 区域设置 = 英语(美国) 2018-02-05 17:14:05,340 信息 o.a.j.JMeter: JMeterHome=/Users/first.last/tmp/apache-jmeter-3.3 2018-02-05 17:14:05,340 信息 o.a.j.JMeter:user.dir =/Users/first.last/tmp/apache-jmeter-3.3 2018-02-05 17:14:05,341 信息 o.a.j.JMeter:密码 =/Users/first.last/tmp/apache-jmeter-3.3 2018-02-05 17:14:05,342 信息 o.a.j.JMeter:IP:127.0.0.1 名称: MSJCIT1050435 全名:本地主机 2018-02-05 17:14:06,930 信息 o.a.j.g.a.LookAndFeelCommand:使用外观: com.apple.laf.AquaLookAndFeel [Mac OS X, 系统] 2018-02-05 17:14:06,935 信息 o.a.j.JMeter:从 org/apache/jmeter/images/icon.properties 2018-02-05 17:14:07,722 信息 o.a.j.e.u.CompoundVariable:注意:函数类名必须包含 字符串:'.functions.' 2018-02-05 17:14:07,722 信息 o.a.j.e.u.CompoundVariable:注意:函数类名不得 包含字符串:'.gui.' 2018-02-05 17:14:08,320 警告 o.j.r.PluginManager:发现 JAR 冲突: /Users/first.last/tmp/apache-jmeter-3.3/lib/ext/ImpalaJDBC4.jar 和 /Users/first.last/tmp/apache-jmeter-3.3/lib/ImpalaJDBC4.jar 2018-02-05 17:14:09,830 信息 o.j.r.PluginManager:插件状态: [jpgc-graphs-basic=2.0, jpgc-functions=2.0, jpgc-casutg=2.5, jpgc-dummy=0.2, jpgc-ffw=2.0, jpgc-fifo=0.2, jpgc-perfmon=2.1, jpgc-plugins-manager=0.19, jpgc-webdriver=2.3, jpgc-tst=2.1, 网络 ocket-sampler=1.0.2-SNAPSHOT,websocket-samplers=1.1,jmeter-core=3.3, jmeter-ftp=3.3, jmeter-http=3.3, jmeter-jdbc=3.3, jmeter-jms=3.3, jmeter-junit=3.3,jmeter-java=3.3,jmeter-ldap=3.3,jmeter-mail=3.3, jmeter-mongodb=3.3,jmeter-native=3.3,jmeter-tcp =3.3,jmeter-components=3.3,jpgc-standard=2.0] 2018-02-05 17:14:09,863 信息 o.a.j.g.u.MenuFactory:跳过 org.apache.jmeter.assertions.BSFAssertion 2018-02-05 17:14:09,964 信息 o.a.j.g.u.MenuFactory:跳过 org.apache.jmeter.extractor.BSFPostProcessor 2018-02-05 17:14:09,987 信息 o.a.j.g.u.MenuFactory:跳过 org.apache.jmeter.modifiers.BSFPreProcessor 2018-02-05 17:14:10,013 信息 o.a.j.p.h.s.HTTPSamplerBase:文本/html 的解析器是 org.apache.jmeter.protocol.http.parser.LagartoBasedHtmlParser 2018-02-05 17:14:10,013 信息 o.a.j.p.h.s.HTTPSamplerBase:解析器 应用程序/xhtml+xml 是 org.apache.jmeter.protocol.http.parser.LagartoBasedHtmlParser 2018-02-05 17:14:10,013 信息 o.a.j.p.h.s.HTTPSamplerBase:解析器 应用程序/xml 是 org.apache.jmeter.protocol.http.parser.LagartoBasedHtmlParser 2018-02-05 17:14:10,013 信息 o.a.j.p.h.s.HTTPSamplerBase:解析器 文本/xml 是 org.apache.jmeter.protocol.http.parser.LagartoBasedHtmlParser 2018-02-05 17:14:10,013 信息 o.a.j.p.h.s.HTTPSamplerBase:解析器 text/vnd.wap.wml 是 org.apache.jmeter.protocol.http.parser.RegexpHTMLParser 2018-02-05 17:14:10,013 信息 o.a.j.p.h.s.HTTPSamplerBase:文本/css 的解析器是 org.apache.jmeter.protocol.http.parser.CssParser 2018-02-05 17:14:10,434 信息 o.a.j.e.KeyToolUtils:在“keytool”中找到 keytool 2018-02-05 17:14:10,435 信息 o.a.j.p.h.p.ProxyControl:HTTP(S) 测试 脚本记录器 SSL 代理将使用支持嵌入式 3rd 的密钥 档案中的派对资源 /Users/first.last/tmp/apache-jmeter-3.3/bin/proxyserver.jks 2018-02-05 17:14:10,557 信息 o.a.j.g.u.MenuFactory:跳过 org.apache.jmeter.protocol.java.sampler.BSFSampler 2018-02-05 17:14:10,586 信息 o.a.j.s.FileServer:默认 base='/Users/first.last/tmp/apache-jmeter-3.3' 2018-02-05 17:14:10,639 信息 o.a.j.g.u.MenuFactory:跳过 org.apache.jmeter.protocol.mongodb.config.MongoSourceElement 2018-02-05 17:14:10,639 信息 o.a.j.g.u.MenuFactory:跳过 org.apache.jmeter.protocol.mongodb.sampler.MongoScriptSampler 2018-02-05 17:14:10,727 信息 o.a.j.g.u.MenuFactory:跳过 org.apache.jmeter.timers.BSFTimer 2018-02-05 17:14:10,743 信息 o.a.j.g.u.MenuFactory:跳过 org.apache.jmeter.visualizers.BSFListener 2018-02-05 17:14:10,834 信息 o.a.j.s.SampleResult:注意:采样时间戳是开始时间 2018-02-05 17:14:10,835 信息 o.a.j.s.SampleResult: sampleresult.default.encoding 设置为 ISO-8859-1 2018-02-05 17:14:10,835 信息 o.a.j.s.SampleResult:sampleresult.useNanoTime=true 2018-02-05 17:14:10,835 信息 o.a.j.s.SampleResult: sampleresult.nanoThreadSleep=5000 2018-02-05 17:14:40,008 信息 o.a.j.g.a.Load:加载文件:/Users/first.last/tmp/impala.jmx 2018-02-05 17:14:40,009 信息 o.a.j.s.FileServer:设置新 base='/Users/first.last/tmp' 2018-02-05 17:14:40,125 信息 o.a.j.s.SaveService:测试计划(JMX)版本:2.2。测试日志 (JTL) 版本:2.2 2018-02-05 17:14:40,129 信息 o.a.j.s.SaveService:使用 SaveService 属性文件编码 UTF-8 2018-02-05 17:14:40,130 信息 o.a.j.s.SaveService:使用 SaveService 属性版本 3.2 2018-02-05 17:14:40,132 信息 o.a.j.s.SaveService:加载文件: /Users/first.last/tmp/impala.jmx 2018-02-05 17:14:40,479 信息 o.a.j.s.FileServer: Set new base='/Users/first.last/tmp' 2018-02-05 17:14:44,337 信息 o.a.j.e.StandardJMeterEngine:运行测试! 2018-02-05 17:14:44,337 信息 o.a.j.s.SampleEvent:列表 sample_variables:[] 2018-02-05 17:14:44,337 信息 o.a.j.s.SampleEvent: 样本变量列表:[] 2018-02-05 17:14:44,356 INFO o.a.j.g.u.JMeterMenuBar: setRunning(true, local) 2018-02-05 17:14:44,516 信息 o.a.j.e.StandardJMeterEngine:启动线程组: 1 : 线程组 2018-02-05 17:14:44,517 INFO o.a.j.e.StandardJMeterEngine:为组线程启动 3 个线程 团体。 2018-02-05 17:14:44,517 信息 o.a.j.e.StandardJMeterEngine: 线程将继续错误 2018-02-05 17:14:44,517 INFO o.a.j.t.ThreadGroup: 开始线程组... number=1 线程=3 加速=1 perThread=333.33334 延迟启动=假 2018-02-05 17:14:44,521 INFO o.a.j.t.ThreadGroup:启动线程组编号 1 2018-02-05 17:14:44,522 信息 o.a.j.e.StandardJMeterEngine:所有线程 群组已经开始 2018-02-05 17:14:44,522 INFO o.a.j.t.JMeterThread:线程开始:线程组 1-1 2018-02-05 17:14:44,525 信息 o.a.j.t.JMeterThread:线程完成:线程组 1-1 2018-02-05 17:14:44,526 错误 o.a.j.JMeter:未捕获的异常: java.lang.NoClassDefFoundError: org/apache/thrift/protocol/TProtocol 在 com.cloudera.impala.core.ImpalaJDBCDriver.(Unknown Source) ~[ImpalaJDBC4.jar:ImpalaJDBC_2.5.42.1062] 在 java.lang.Class.forName0(Native Method) ~[?:1.8.0_162] 在 java.lang.Class.forName(Class.java:264) ~[?:1.8.0_162] 在 org.apache.commons.dbcp2.BasicDataSource.createConnectionFactory(BasicDataSource.java:2124) ~[commons-dbcp2-2.1.1.jar:2.1.1] 在 org.apache.commons.dbcp2.BasicDataSource.createDataSource(BasicDataSource.java:2033) ~[commons-dbcp2-2.1.1.jar:2.1.1] 在 org.apache.commons.dbcp2.BasicDataSource.getConnection(BasicDataSource.java:1533) ~[commons-dbcp2-2.1.1.jar:2.1.1] 在 org.apache.jmeter.protocol.jdbc.config.DataSourceElement$DataSourceComponentImpl.getConnection(DataSourceElement.java:326) ~[ApacheJMeter_jdbc.jar:3.3 r1808647] 在 org.apache.jmeter.protocol.jdbc.config.DataSourceElement.getConnection(DataSourceElement.java:191) ~[ApacheJMeter_jdbc.jar:3.3 r1808647] 在 org.apache.jmeter.protocol.jdbc.sampler.JDBCSampler.sample(JDBCSampler.java:79) ~[ApacheJMeter_jdbc.jar:3.3 r1808647] 在 org.apache.jmeter.threads.JMeterThread.executeSamplePackage(JMeterThread.java:498) ~[ApacheJMeter_core.jar:3.3 r1808647] 在 org.apache.jmeter.threads.JMeterThread.processSampler(JMeterThread.java:424) ~[ApacheJMeter_core.jar:3.3 r1808647] 在 org.apache.jmeter.threads.JMeterThread.run(JMeterThread.java:255) ~[ApacheJMeter_core.jar:3.3 r1808647] 在 java.lang.Thread.run(Thread.java:748) [?:1.8.0_162] 引起:java.lang.ClassNotFoundException: org.apache.thrift.protocol.TProtocol 在 java.net.URLClassLoader.findClass(URLClassLoader.java:381) ~[?:1.8.0_162] 在 java.lang.ClassLoader.loadClass(ClassLoader.java:424) ~[?:1.8.0_162] 在 java.lang.ClassLoader.loadClass(ClassLoader.java:357) ~[?:1.8.0_162] ... 13 更多 2018-02-05 17:14:44,860 信息 o.a.j.t.JMeterThread:线程开始:线程组 1-2 2018-02-05 17:14:44,862 信息 o.a.j.t.JMeterThread:线程完成:线程组 1-2 2018-02-05 17:14:44,862 错误 o.a.j.JMeter:未捕获的异常: java.lang.NoClassDefFoundError:无法初始化类 com.cloudera.impala.core.ImpalaJDBCDriver 在 java.lang.Class.forName0(Native Method) ~[?:1.8.0_162] 在 java.lang.Class.forName(Class.java:264) ~[?:1.8.0_162] 在 org.apache.commons.dbcp2.BasicDataSource.createConnectionFactory(BasicDataSource.java:2124) ~[commons-dbcp2-2.1.1.jar:2.1.1] 在 org.apache.commons.dbcp2.BasicDataSource.createDataSource(BasicDataSource.java:2033) ~[commons-dbcp2-2.1.1.jar:2.1.1] 在 org.apache.commons.dbcp2.BasicDataSource.getConnection(BasicDataSource.java:1533) ~[commons-dbcp2-2.1.1.jar:2.1.1] 在 org.apache.jmeter.protocol.jdbc.config.DataSourceElement$DataSourceComponentImpl.getConnection(DataSourceElement.java:326) ~[ApacheJMeter_jdbc.jar:3.3 r1808647] 在 org.apache.jmeter.protocol.jdbc.config.DataSourceElement.getConnection(DataSourceElement.java:191) ~[ApacheJMeter_jdbc.jar:3.3 r1808647] 在 org.apache.jmeter.protocol.jdbc.sampler.JDBCSampler.sample(JDBCSampler.java:79) ~[ApacheJMeter_jdbc.jar:3.3 r1808647] 在 org.apache.jmeter.threads.JMeterThread.executeSamplePackage(JMeterThread.java:498) ~[ApacheJMeter_core.jar:3.3 r1808647] 在 org.apache.jmeter.threads.JMeterThread.processSampler(JMeterThread.java:424) ~[ApacheJMeter_core.jar:3.3 r1808647] 在 org.apache.jmeter.threads.JMeterThread.run(JMeterThread.java:255) ~[ApacheJMeter_core.jar:3.3 r1808647] 在 java.lang.Thread.run(Thread.java:748) [?:1.8.0_162] 2018-02-05 17:14:45,191 信息 o.a.j.t.JMeterThread:线程开始: 线程组 1-3 2018-02-05 17:14:45,192 信息 o.a.j.t.JMeterThread: 线程完成:线程组 1-3 2018-02-05 17:14:45,192 错误 o.a.j.JMeter:未捕获的异常:java.lang.NoClassDefFoundError: 无法初始化类 com.cloudera.impala.core.ImpalaJDBCDriver 在 java.lang.Class.forName0(Native Method) ~[?:1.8.0_162] 在 java.lang.Class.forName(Class.java:264) ~[?:1.8.0_162] 在 org.apache.commons.dbcp2.BasicDataSource.createConnectionFactory(BasicDataSource.java:2124) ~[commons-dbcp2-2.1.1.jar:2.1.1] 在 org.apache.commons.dbcp2.BasicDataSource.createDataSource(BasicDataSource.java:2033) ~[commons-dbcp2-2.1.1.jar:2.1.1] 在 org.apache.commons.dbcp2.BasicDataSource.getConnection(BasicDataSource.java:1533) ~[commons-dbcp2-2.1.1.jar:2.1.1] 在 org.apache.jmeter.protocol.jdbc.config.DataSourceElement$DataSourceComponentImpl.getConnection(DataSourceElement.java:326) ~[ApacheJMeter_jdbc.jar:3.3 r1808647] 在 org.apache.jmeter.protocol.jdbc.config.DataSourceElement.getConnection(DataSourceElement.java:191) ~[ApacheJMeter_jdbc.jar:3.3 r1808647] 在 org.apache.jmeter.protocol.jdbc.sampler.JDBCSampler.sample(JDBCSampler.java:79) ~[ApacheJMeter_jdbc.jar:3.3 r1808647] 在 org.apache.jmeter.threads.JMeterThread.executeSamplePackage(JMeterThread.java:498) ~[ApacheJMeter_core.jar:3.3 r1808647] 在 org.apache.jmeter.threads.JMeterThread.processSampler(JMeterThread.java:424) ~[ApacheJMeter_core.jar:3.3 r1808647] 在 org.apache.jmeter.threads.JMeterThread.run(JMeterThread.java:255) ~[ApacheJMeter_core.jar:3.3 r1808647] 在 java.lang.Thread.run(Thread.java:748) [?:1.8.0_162] 2018-02-05 17:14:45,193 信息 o.a.j.e.StandardJMeterEngine:通知 测试结束的测试听众 2018-02-05 17:14:45,195 INFO o.a.j.g.u.JMeterMenuBar: setRunning(false, local)

【问题讨论】:

我可以查看日志吗? @aswzen,附上运行日志。 【参考方案1】:

从错误中,您缺少类 org/apache/thrift/protocol/TProtocol,它是 apache thrift jar - libthrift-X.X.X.jar 的一部分。 Impala 驱动程序有强制 jars 列表, 见Configure Impala JDBC:

将 JAR 文件下载到将使用 JDBC 和 Impala 的每台客户端计算机:... libthrift-X.X.X.jar

在运行 JDBC 应用程序的系统上启用 Impala 的 JDBC 支持:

将上面列出的 JAR 文件下载到每台客户端计算机。

完整的依赖列表:

commons-logging-X.X.X.jar hadoop-common.jar hive-common-X.XX.X-cdhX.X.X.jar hive-jdbc-X.XX.X-cdhX.X.X.jar hive-metastore-X.XX.X-cdhX.X.X.jar 蜂巢服务-X.XX.X-cdhX.X.X.jar httpclient-X.X.X.jar httpcore-X.X.X.jar libfb303-X.X.X.jar libthrift-X.X.X.jar log4j-X.X.XX.jar slf4j-api-X.X.X.jar slf4j-logXjXX-X.X.X.jar

【讨论】:

以上是关于JMeter 3.3 一直说找不到类的主要内容,如果未能解决你的问题,请参考以下文章

java 主启动类找不到

控制器类找不到 html 模板

Javatest报错为啥说找不到测试类?

php thinkphp vender第三方类找不到类怎么解决

遇到一个spring启动时类找不到的问题~

Eclipse中HttpServlet类找不到