Kafkameter NoClassDefFoundError
Kafkameter NoClassDefFoundError
我希望通过 jMeter extension, installed by the jMeter plugin manager.
向 Kafka 消费者发送动态生成的消息来加载测试 Kafka
我的 Kafka 已配置、设置并完美 运行ning。我按照 these instructions 设置了 Kafka 测试计划并 运行 它,但是每次我设置一个并 运行 它时,我都会在日志中收到此错误:
2017/03/23 10:35:48 INFO - jmeter.gui.util.MenuFactory: Skipping org.apache.jmeter.assertions.BSFAssertion
2017/03/23 10:35:49 INFO - jmeter.gui.util.MenuFactory: Skipping org.apache.jmeter.extractor.BSFPostProcessor
2017/03/23 10:35:49 INFO - jmeter.gui.util.MenuFactory: Skipping org.apache.jmeter.modifiers.BSFPreProcessor
2017/03/23 10:35:49 INFO - jmeter.protocol.http.sampler.HTTPSamplerBase: Parser for text/html is org.apache.jmeter.protocol.http.parser.LagartoBasedHtmlParser
2017/03/23 10:35:49 INFO - jmeter.protocol.http.sampler.HTTPSamplerBase: Parser for application/xhtml+xml is org.apache.jmeter.protocol.http.parser.LagartoBasedHtmlParser
2017/03/23 10:35:49 INFO - jmeter.protocol.http.sampler.HTTPSamplerBase: Parser for application/xml is org.apache.jmeter.protocol.http.parser.LagartoBasedHtmlParser
2017/03/23 10:35:49 INFO - jmeter.protocol.http.sampler.HTTPSamplerBase: Parser for text/xml is org.apache.jmeter.protocol.http.parser.LagartoBasedHtmlParser
2017/03/23 10:35:49 INFO - jmeter.protocol.http.sampler.HTTPSamplerBase: Parser for text/vnd.wap.wml is org.apache.jmeter.protocol.http.parser.RegexpHTMLParser
2017/03/23 10:35:49 INFO - jmeter.protocol.http.sampler.HTTPSamplerBase: Parser for text/css is org.apache.jmeter.protocol.http.parser.CssParser
2017/03/23 10:35:49 INFO - jorphan.exec.KeyToolUtils: keytool found at 'keytool'
2017/03/23 10:35:49 INFO - jmeter.protocol.http.proxy.ProxyControl: HTTP(S) Test Script Recorder SSL Proxy will use keys that support embedded 3rd party resources in file /Users/jordan/Downloads/apache-jmeter-3.1/bin/proxyserver.jks
2017/03/23 10:35:49 INFO - jmeter.gui.util.MenuFactory: Skipping org.apache.jmeter.protocol.java.sampler.BSFSampler
2017/03/23 10:35:49 INFO - jmeter.gui.util.MenuFactory: Skipping org.apache.jmeter.protocol.mongodb.config.MongoSourceElement
2017/03/23 10:35:49 INFO - jmeter.gui.util.MenuFactory: Skipping org.apache.jmeter.protocol.mongodb.sampler.MongoScriptSampler
2017/03/23 10:35:49 INFO - jmeter.gui.util.MenuFactory: Skipping org.apache.jmeter.timers.BSFTimer
2017/03/23 10:35:49 INFO - jmeter.gui.util.MenuFactory: Skipping org.apache.jmeter.visualizers.BSFListener
2017/03/23 10:35:49 INFO - jmeter.gui.util.MenuFactory: Skipping org.apache.jmeter.visualizers.MonitorHealthVisualizer
2017/03/23 10:35:49 INFO - jmeter.samplers.SampleResult: Note: Sample TimeStamps are START times
2017/03/23 10:35:49 INFO - jmeter.samplers.SampleResult: sampleresult.default.encoding is set to ISO-8859-1
2017/03/23 10:35:49 INFO - jmeter.samplers.SampleResult: sampleresult.useNanoTime=true
2017/03/23 10:35:49 INFO - jmeter.samplers.SampleResult: sampleresult.nanoThreadSleep=5000
2017/03/23 10:38:54 INFO - jmeter.services.FileServer: Default base='/Users/jordan'
2017/03/23 10:38:54 INFO - jmeter.gui.action.Load: Loading file: /Users/jordan/Downloads/apache-jmeter-3.1/bin/test-plans/kafka-test.jmx
2017/03/23 10:38:54 INFO - jmeter.services.FileServer: Set new base='/Users/jordan/Downloads/apache-jmeter-3.1/bin/test-plans'
2017/03/23 10:38:54 INFO - jmeter.save.SaveService: Testplan (JMX) version: 2.2. Testlog (JTL) version: 2.2
2017/03/23 10:38:54 INFO - jmeter.save.SaveService: Using SaveService properties file encoding UTF-8
2017/03/23 10:38:54 INFO - jmeter.save.SaveService: Using SaveService properties version 3.1
2017/03/23 10:38:54 INFO - jmeter.save.SaveService: All converter versions present and correct
2017/03/23 10:38:54 INFO - jmeter.save.SaveService: Loading file: /Users/jordan/Downloads/apache-jmeter-3.1/bin/test-plans/kafka-test.jmx
2017/03/23 10:38:54 INFO - jmeter.services.FileServer: Set new base='/Users/jordan/Downloads/apache-jmeter-3.1/bin/test-plans'
2017/03/23 10:39:04 INFO - jmeter.engine.StandardJMeterEngine: Running the test!
2017/03/23 10:39:04 INFO - jmeter.samplers.SampleEvent: List of sample_variables: []
2017/03/23 10:39:04 INFO - jmeter.samplers.SampleEvent: List of sample_variables: []
2017/03/23 10:39:04 INFO - jmeter.protocol.java.sampler.JavaSampler: Created class: co.signal.kafkameter.KafkaProducerSampler. Uses tearDownTest: true
2017/03/23 10:39:04 INFO - jmeter.gui.util.JMeterMenuBar: setRunning(true,*local*)
2017/03/23 10:39:05 INFO - jmeter.engine.StandardJMeterEngine: Starting ThreadGroup: 1 : Thread Group
2017/03/23 10:39:05 INFO - jmeter.engine.StandardJMeterEngine: Starting 1 threads for group Thread Group.
2017/03/23 10:39:05 INFO - jmeter.engine.StandardJMeterEngine: Thread will continue on error
2017/03/23 10:39:05 INFO - jmeter.threads.ThreadGroup: Starting thread group number 1 threads 1 ramp-up 1 perThread 1000.0 delayedStart=false
2017/03/23 10:39:05 INFO - jmeter.threads.ThreadGroup: Started thread group number 1
2017/03/23 10:39:05 INFO - jmeter.engine.StandardJMeterEngine: All thread groups have been started
2017/03/23 10:39:05 INFO - jmeter.threads.JMeterThread: Thread started: Thread Group 1-1
2017/03/23 10:39:05 ERROR - jmeter.threads.JMeterThread: Test failed! java.lang.NoClassDefFoundError: org/apache/log4j/Logger
at kafka.utils.Logging$class.logger(Logging.scala:24)
at kafka.utils.VerifiableProperties.logger(VerifiableProperties.scala:23)
at kafka.utils.Logging$class.info(Logging.scala:66)
at kafka.utils.VerifiableProperties.info(VerifiableProperties.scala:23)
at kafka.utils.VerifiableProperties.verify(VerifiableProperties.scala:180)
at kafka.producer.ProducerConfig.<init>(ProducerConfig.scala:57)
at co.signal.kafkameter.KafkaProducerSampler.setupTest(KafkaProducerSampler.java:90)
at org.apache.jmeter.protocol.java.sampler.JavaSampler.sample(JavaSampler.java:193)
at org.apache.jmeter.threads.JMeterThread.executeSamplePackage(JMeterThread.java:475)
at org.apache.jmeter.threads.JMeterThread.processSampler(JMeterThread.java:418)
at org.apache.jmeter.threads.JMeterThread.run(JMeterThread.java:249)
at java.lang.Thread.run(Thread.java:745)
Caused by: java.lang.ClassNotFoundException: org.apache.log4j.Logger
at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
... 12 more
2017/03/23 10:39:05 INFO - jmeter.threads.JMeterThread: Thread finished: Thread Group 1-1
2017/03/23 10:39:05 INFO - jmeter.engine.StandardJMeterEngine: Notifying test listeners of end of test
2017/03/23 10:39:05 WARN - jmeter.engine.StandardJMeterEngine: Error encountered during shutdown of org.apache.jmeter.protocol.java.sampler.JavaSampler@51cd3642 java.lang.NullPointerException
at co.signal.kafkameter.KafkaProducerSampler.teardownTest(KafkaProducerSampler.java:96)
at org.apache.jmeter.protocol.java.sampler.JavaSampler.testEnded(JavaSampler.java:292)
at org.apache.jmeter.engine.StandardJMeterEngine.notifyTestListenersOfEnd(StandardJMeterEngine.java:216)
at org.apache.jmeter.engine.StandardJMeterEngine.run(StandardJMeterEngine.java:437)
at java.lang.Thread.run(Thread.java:745)
2017/03/23 10:39:05 INFO - jmeter.gui.util.JMeterMenuBar: setRunning(false,*local*)
所以,我得到的错误是找不到 org/apache/log4j/logger
,但我不确定如何解决这个问题。我查看了 other known issues 其他人遇到的情况,看他们是否与我相似,但无济于事。我想也许我的测试计划写错了,但我找不到任何问题。关于我做错了什么有什么建议吗?
java.lang.ClassNotFoundException This exception indicates that the
class was not found on the classpath. This indicates that we were
trying to load the class definition, and the class did not exist on
the classpath.
尝试添加 log4j jar。
如果是maven项目你可以添加下面的依赖随时更改为合适的版本。
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.15</version>
</dependency>
如果存在版本冲突,也可能会发生这种情况,因为 log4j jar 可能捆绑在另一个 jar 中,尝试找出并排除 log4j jar。
<dependency>
<groupId>org.apache.kafka</groupId>
<artifactId>kafka_2.10</artifactId>
<version>0.8.1.1</version>
<exclusions>
<exclusion>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
</exclusion>
</exclusions>
</dependency>
我想通了。 jMeter 在其 lib
文件夹中缺少 log4j jar,当下载并放入所述文件夹时,测试运行没有问题。
我希望通过 jMeter extension, installed by the jMeter plugin manager.
向 Kafka 消费者发送动态生成的消息来加载测试 Kafka我的 Kafka 已配置、设置并完美 运行ning。我按照 these instructions 设置了 Kafka 测试计划并 运行 它,但是每次我设置一个并 运行 它时,我都会在日志中收到此错误:
2017/03/23 10:35:48 INFO - jmeter.gui.util.MenuFactory: Skipping org.apache.jmeter.assertions.BSFAssertion
2017/03/23 10:35:49 INFO - jmeter.gui.util.MenuFactory: Skipping org.apache.jmeter.extractor.BSFPostProcessor
2017/03/23 10:35:49 INFO - jmeter.gui.util.MenuFactory: Skipping org.apache.jmeter.modifiers.BSFPreProcessor
2017/03/23 10:35:49 INFO - jmeter.protocol.http.sampler.HTTPSamplerBase: Parser for text/html is org.apache.jmeter.protocol.http.parser.LagartoBasedHtmlParser
2017/03/23 10:35:49 INFO - jmeter.protocol.http.sampler.HTTPSamplerBase: Parser for application/xhtml+xml is org.apache.jmeter.protocol.http.parser.LagartoBasedHtmlParser
2017/03/23 10:35:49 INFO - jmeter.protocol.http.sampler.HTTPSamplerBase: Parser for application/xml is org.apache.jmeter.protocol.http.parser.LagartoBasedHtmlParser
2017/03/23 10:35:49 INFO - jmeter.protocol.http.sampler.HTTPSamplerBase: Parser for text/xml is org.apache.jmeter.protocol.http.parser.LagartoBasedHtmlParser
2017/03/23 10:35:49 INFO - jmeter.protocol.http.sampler.HTTPSamplerBase: Parser for text/vnd.wap.wml is org.apache.jmeter.protocol.http.parser.RegexpHTMLParser
2017/03/23 10:35:49 INFO - jmeter.protocol.http.sampler.HTTPSamplerBase: Parser for text/css is org.apache.jmeter.protocol.http.parser.CssParser
2017/03/23 10:35:49 INFO - jorphan.exec.KeyToolUtils: keytool found at 'keytool'
2017/03/23 10:35:49 INFO - jmeter.protocol.http.proxy.ProxyControl: HTTP(S) Test Script Recorder SSL Proxy will use keys that support embedded 3rd party resources in file /Users/jordan/Downloads/apache-jmeter-3.1/bin/proxyserver.jks
2017/03/23 10:35:49 INFO - jmeter.gui.util.MenuFactory: Skipping org.apache.jmeter.protocol.java.sampler.BSFSampler
2017/03/23 10:35:49 INFO - jmeter.gui.util.MenuFactory: Skipping org.apache.jmeter.protocol.mongodb.config.MongoSourceElement
2017/03/23 10:35:49 INFO - jmeter.gui.util.MenuFactory: Skipping org.apache.jmeter.protocol.mongodb.sampler.MongoScriptSampler
2017/03/23 10:35:49 INFO - jmeter.gui.util.MenuFactory: Skipping org.apache.jmeter.timers.BSFTimer
2017/03/23 10:35:49 INFO - jmeter.gui.util.MenuFactory: Skipping org.apache.jmeter.visualizers.BSFListener
2017/03/23 10:35:49 INFO - jmeter.gui.util.MenuFactory: Skipping org.apache.jmeter.visualizers.MonitorHealthVisualizer
2017/03/23 10:35:49 INFO - jmeter.samplers.SampleResult: Note: Sample TimeStamps are START times
2017/03/23 10:35:49 INFO - jmeter.samplers.SampleResult: sampleresult.default.encoding is set to ISO-8859-1
2017/03/23 10:35:49 INFO - jmeter.samplers.SampleResult: sampleresult.useNanoTime=true
2017/03/23 10:35:49 INFO - jmeter.samplers.SampleResult: sampleresult.nanoThreadSleep=5000
2017/03/23 10:38:54 INFO - jmeter.services.FileServer: Default base='/Users/jordan'
2017/03/23 10:38:54 INFO - jmeter.gui.action.Load: Loading file: /Users/jordan/Downloads/apache-jmeter-3.1/bin/test-plans/kafka-test.jmx
2017/03/23 10:38:54 INFO - jmeter.services.FileServer: Set new base='/Users/jordan/Downloads/apache-jmeter-3.1/bin/test-plans'
2017/03/23 10:38:54 INFO - jmeter.save.SaveService: Testplan (JMX) version: 2.2. Testlog (JTL) version: 2.2
2017/03/23 10:38:54 INFO - jmeter.save.SaveService: Using SaveService properties file encoding UTF-8
2017/03/23 10:38:54 INFO - jmeter.save.SaveService: Using SaveService properties version 3.1
2017/03/23 10:38:54 INFO - jmeter.save.SaveService: All converter versions present and correct
2017/03/23 10:38:54 INFO - jmeter.save.SaveService: Loading file: /Users/jordan/Downloads/apache-jmeter-3.1/bin/test-plans/kafka-test.jmx
2017/03/23 10:38:54 INFO - jmeter.services.FileServer: Set new base='/Users/jordan/Downloads/apache-jmeter-3.1/bin/test-plans'
2017/03/23 10:39:04 INFO - jmeter.engine.StandardJMeterEngine: Running the test!
2017/03/23 10:39:04 INFO - jmeter.samplers.SampleEvent: List of sample_variables: []
2017/03/23 10:39:04 INFO - jmeter.samplers.SampleEvent: List of sample_variables: []
2017/03/23 10:39:04 INFO - jmeter.protocol.java.sampler.JavaSampler: Created class: co.signal.kafkameter.KafkaProducerSampler. Uses tearDownTest: true
2017/03/23 10:39:04 INFO - jmeter.gui.util.JMeterMenuBar: setRunning(true,*local*)
2017/03/23 10:39:05 INFO - jmeter.engine.StandardJMeterEngine: Starting ThreadGroup: 1 : Thread Group
2017/03/23 10:39:05 INFO - jmeter.engine.StandardJMeterEngine: Starting 1 threads for group Thread Group.
2017/03/23 10:39:05 INFO - jmeter.engine.StandardJMeterEngine: Thread will continue on error
2017/03/23 10:39:05 INFO - jmeter.threads.ThreadGroup: Starting thread group number 1 threads 1 ramp-up 1 perThread 1000.0 delayedStart=false
2017/03/23 10:39:05 INFO - jmeter.threads.ThreadGroup: Started thread group number 1
2017/03/23 10:39:05 INFO - jmeter.engine.StandardJMeterEngine: All thread groups have been started
2017/03/23 10:39:05 INFO - jmeter.threads.JMeterThread: Thread started: Thread Group 1-1
2017/03/23 10:39:05 ERROR - jmeter.threads.JMeterThread: Test failed! java.lang.NoClassDefFoundError: org/apache/log4j/Logger
at kafka.utils.Logging$class.logger(Logging.scala:24)
at kafka.utils.VerifiableProperties.logger(VerifiableProperties.scala:23)
at kafka.utils.Logging$class.info(Logging.scala:66)
at kafka.utils.VerifiableProperties.info(VerifiableProperties.scala:23)
at kafka.utils.VerifiableProperties.verify(VerifiableProperties.scala:180)
at kafka.producer.ProducerConfig.<init>(ProducerConfig.scala:57)
at co.signal.kafkameter.KafkaProducerSampler.setupTest(KafkaProducerSampler.java:90)
at org.apache.jmeter.protocol.java.sampler.JavaSampler.sample(JavaSampler.java:193)
at org.apache.jmeter.threads.JMeterThread.executeSamplePackage(JMeterThread.java:475)
at org.apache.jmeter.threads.JMeterThread.processSampler(JMeterThread.java:418)
at org.apache.jmeter.threads.JMeterThread.run(JMeterThread.java:249)
at java.lang.Thread.run(Thread.java:745)
Caused by: java.lang.ClassNotFoundException: org.apache.log4j.Logger
at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
... 12 more
2017/03/23 10:39:05 INFO - jmeter.threads.JMeterThread: Thread finished: Thread Group 1-1
2017/03/23 10:39:05 INFO - jmeter.engine.StandardJMeterEngine: Notifying test listeners of end of test
2017/03/23 10:39:05 WARN - jmeter.engine.StandardJMeterEngine: Error encountered during shutdown of org.apache.jmeter.protocol.java.sampler.JavaSampler@51cd3642 java.lang.NullPointerException
at co.signal.kafkameter.KafkaProducerSampler.teardownTest(KafkaProducerSampler.java:96)
at org.apache.jmeter.protocol.java.sampler.JavaSampler.testEnded(JavaSampler.java:292)
at org.apache.jmeter.engine.StandardJMeterEngine.notifyTestListenersOfEnd(StandardJMeterEngine.java:216)
at org.apache.jmeter.engine.StandardJMeterEngine.run(StandardJMeterEngine.java:437)
at java.lang.Thread.run(Thread.java:745)
2017/03/23 10:39:05 INFO - jmeter.gui.util.JMeterMenuBar: setRunning(false,*local*)
所以,我得到的错误是找不到 org/apache/log4j/logger
,但我不确定如何解决这个问题。我查看了 other known issues 其他人遇到的情况,看他们是否与我相似,但无济于事。我想也许我的测试计划写错了,但我找不到任何问题。关于我做错了什么有什么建议吗?
java.lang.ClassNotFoundException This exception indicates that the class was not found on the classpath. This indicates that we were trying to load the class definition, and the class did not exist on the classpath.
尝试添加 log4j jar。
如果是maven项目你可以添加下面的依赖随时更改为合适的版本。
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.15</version>
</dependency>
如果存在版本冲突,也可能会发生这种情况,因为 log4j jar 可能捆绑在另一个 jar 中,尝试找出并排除 log4j jar。
<dependency>
<groupId>org.apache.kafka</groupId>
<artifactId>kafka_2.10</artifactId>
<version>0.8.1.1</version>
<exclusions>
<exclusion>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
</exclusion>
</exclusions>
</dependency>
我想通了。 jMeter 在其 lib
文件夹中缺少 log4j jar,当下载并放入所述文件夹时,测试运行没有问题。