无法使用jmeter maven插件实例化类:org.apache.activemq.jndi.ActiveMQInitialContextFactory

无法使用jmeter maven插件实例化类:org.apache.activemq.jndi.ActiveMQInitialContextFactory,maven,jmeter,activemq,jndi,jmeter-maven-plugin,Maven,Jmeter,Activemq,Jndi,Jmeter Maven Plugin,简而言之,如果我从Maven运行下面的JMeter计划测试,它会给出结果: javax.naming.NamingException: javax.naming.NoInitialContextException: Cannot instantiate class: org.apache.activemq.jndi.ActiveMQInitialContextFactory [Root exception is java.lang.ClassNotFoundException: org.apac

简而言之,如果我从Maven运行下面的JMeter计划测试,它会给出结果:

javax.naming.NamingException: javax.naming.NoInitialContextException: Cannot instantiate class: org.apache.activemq.jndi.ActiveMQInitialContextFactory [Root exception is java.lang.ClassNotFoundException: org.apache.activemq.jndi.ActiveMQInitialContextFactory]
尽管如此,如果我在没有maven插件的情况下运行相同的JMeter计划测试,它将正确运行

提供更多详细信息:

如果以这种方式启动ActiveMQ(Windows命令提示):

然后,我以完全相同的方式运行jmx脚本:

jmeter.bat -n -t C:\_d\scripts\JMeter\JMS_SQS_MVN\SQS.jmx -l C:\temp\activemq.jtl -j C:\temp\activemq.jmx.log
mvn clean verify
我可以转到ActiveMq控制台,看到创建的队列标记为sqs_dummy_mvn6,正如它出现在这样的jmx脚本中一样

现在,使用相同的脚本,但通过maven插件,它只是显示“无法实例化类:org.apache.activemq.jndi.ActiveMQInitialContextFactory”。我知道,每当我使用jmeter maven插件时,嵌入式jmeter和嵌入式activemq都会在验证阶段启动和停止

我通过maven以这种方式调用相同的脚本:

jmeter.bat -n -t C:\_d\scripts\JMeter\JMS_SQS_MVN\SQS.jmx -l C:\temp\activemq.jtl -j C:\temp\activemq.jmx.log
mvn clean verify
…\artproducer\src\test\jmeter\SQS.jmx(下面仅启用发布服务器;禁用订阅以使测试更简单)

…\artproducer\target\jmeter\results\20170111-SQS.jtl

<?xml version="1.0" encoding="UTF-8"?>
<testResults version="1.2">
<sample t="0" it="0" lt="0" ts="0" s="false" lb="JMS Publisher" rc="000" rm="javax.naming.NamingException: javax.naming.NoInitialContextException: Cannot instantiate class: org.apache.activemq.jndi.ActiveMQInitialContextFactory [Root exception is java.lang.ClassNotFoundException: org.apache.activemq.jndi.ActiveMQInitialContextFactory]" tn="Grupo de Usuários - Consumers 1-1" dt="" by="0" ng="1" na="1"/>

</testResults>

pom:


4.0.0
grpactivemq
艺术制作人
战争
0.0.1-快照
艺术制作人Maven Webapp
http://maven.apache.org
UTF-8
1.8
4.11
5.9.0
4.1.5.1发布
org.apache.activemq
activemq全部
${activemq.version}
org.springframework
弹簧芯
${spring.version}
org.springframework
SpringJMS
${spring.version}
org.apache.xbean
xbean spring
3.7
朱尼特
朱尼特
${junit.version}
com.lazerycode.jmeter
jmetermaven插件
2.0.3
jmeter测试
验证
性能测试
org.apache.activemq
activemq全部
${activemq.version}
org.apache.maven.plugins
maven编译器插件
${jdk.version}
${jdk.version}
艺术制作人

我认为您需要将
activemq all.jar
依赖项添加到JMeter的
/lib/ext
文件夹中,如上所述,这与您使用的
语法略有不同:

        <plugin>
            <groupId>com.lazerycode.jmeter</groupId>
            <artifactId>jmeter-maven-plugin</artifactId>
            <version>2.0.3</version>
            <executions>
                <execution>
                    <id>jmeter-test</id>
                    <phase>verify</phase>
                    <goals>
                        <goal>jmeter</goal>
                    </goals>
                </execution>
            </executions>
            <configuration>
                <jmeterExtensions>
                    <artifact>org.apache.activemq:activemq-all:jar:${activemq.version}</artifact>
                </jmeterExtensions>
            </configuration>
        </plugin>

com.lazerycode.jmeter
jmetermaven插件
2.0.3
jmeter测试
验证
性能测试
org.apache.activemq:activemq all:jar:${activemq.version}
使用2.6.0版的

并在配置节点下添加:

 <testPlanLibraries>
    <artifact>org.apache.activemq:activemq-spring:5.15.2</artifact>
    <artifact>org.apache.activemq:activemq-client:5.15.2</artifact>
    <artifact>org.apache.activemq:activemq-broker:5.15.2</artifact>
</testPlanLibraries>
<!-- Remove broken JARS -->
<excludedArtifacts>
    <exclusion>commons-pool2:commons-pool2</exclusion>
    <exclusion>commons-math3:commons-math3</exclusion>
    <exclusion>com.sun.jdmk:jmxtools</exclusion>
    <exclusion>com.sun.jmx:jmxri</exclusion>
</excludedArtifacts>

activemq:activemqspring:5.15.2
activemq:activemq客户端:5.15.2
activemq:activemq代理:5.15.2
commons-pool2:commons-pool2
commons-math3:commons-math3
jdmk:jmxtools
com.sun.jmx:jmxri

Kiril,完成了。作为补充,和之间的区别是什么。。。在下面换句话说,你的方法和我的有什么不同。未来的读者可能有兴趣知道,只有在我遵循Kiril answer并启动了ActiveMQ服务之后,它才会起作用,所以,我假设这样的maven插件不会启动ActiveMQ嵌入式,与我在问题中的假设非常不同。在1.x版本中,插件依赖项是通过在POM的插件配置中应用特定的依赖项而引入的。对于2.x版本的插件,我们改变了这一点,因为我们改变了获取和应用不同人工制品的方式。当前的实现应该更可靠。Ubik Load Pack关于插件2.6.0版本的回答也是正确的,并且是向前推进的方法。同样,这个回答帮助我解决了问题。。。只需下载并将这个:文件添加到/lib/ext,不要忘记重新运行/重新启动Jmeter程序来加载.jar dependencies在downvoter上,您能测试一下答案吗?我们团队的成员是jmeter maven插件的核心开发人员,所以答案是正确的。投否决票不是很好!
 <testPlanLibraries>
    <artifact>org.apache.activemq:activemq-spring:5.15.2</artifact>
    <artifact>org.apache.activemq:activemq-client:5.15.2</artifact>
    <artifact>org.apache.activemq:activemq-broker:5.15.2</artifact>
</testPlanLibraries>
<!-- Remove broken JARS -->
<excludedArtifacts>
    <exclusion>commons-pool2:commons-pool2</exclusion>
    <exclusion>commons-math3:commons-math3</exclusion>
    <exclusion>com.sun.jdmk:jmxtools</exclusion>
    <exclusion>com.sun.jmx:jmxri</exclusion>
</excludedArtifacts>