首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在使用Java代码运行JMeter文件时包含额外的jar依赖?

如何在使用Java代码运行JMeter文件时包含额外的jar依赖?
EN

Stack Overflow用户
提问于 2018-07-03 07:08:53
回答 1查看 2.1K关注 0票数 1

因此,我在“资源”文件夹下创建了一个文件夹,作为JMeter主页:

我有以下代码来运行JMX文件:

代码语言:javascript
复制
// JMeter Engine
StandardJMeterEngine jmeter = new StandardJMeterEngine();

// Initialize Properties, logging, locale, etc.
File jmeterProperties = new ClassPathResource("/jmeter/JMeterHome/bin/jmeter.properties").getFile();
JMeterUtils.loadJMeterProperties(jmeterProperties.getAbsolutePath());
File jmeterHome = new ClassPathResource("/jmeter/JMeterHome").getFile();
JMeterUtils.setJMeterHome(jmeterHome.getAbsolutePath());
JMeterUtils.initLocale();

// Initialize JMeter SaveService
SaveService.loadProperties();

// Load existing .jmx Test Plan
File jmx = new ClassPathResource("/jmeter/some-test.jmx").getFile();
HashTree testPlanTree = SaveService.loadTree(jmx);

// Run JMeter Test
jmeter.configure(testPlanTree);
jmeter.run();

但是,我得到了ClassNotFoundException,这是因为没有加载lib文件夹中的jar文件

代码语言:javascript
复制
cause-exception     : com.thoughtworks.xstream.mapper.CannotResolveClassException
cause-message       : com.tag.jmeter.ext.config.PropertyReader
class               : org.apache.jorphan.collections.ListedHashTree
required-type       : org.apache.jorphan.collections.ListedHashTree
converter-type      : org.apache.jmeter.save.converters.HashTreeConverter
path                : /jmeterTestPlan/hashTree/hashTree/com.tag.jmeter.ext.config.PropertyReader

问题是,这些jar文件中有很多甚至不在maven repo中,而且还有很多jar文件。在类路径中包含它们的最佳方法是什么,还是我在这里遗漏了什么?

我暂时添加了以下依赖项,但这不是正确的解决方案:

代码语言:javascript
复制
<dependency>
    <groupId>all</groupId>
    <artifactId>all</artifactId>
    <version>1.1</version>
    <scope>system</scope>
    <systemPath>${project.basedir}/src/main/resources/jmeter/JMeterHome/lib/tag-jmeter-extn-1.1.jar</systemPath>
</dependency>

请注意,我正在编写一系列util类来运行jmx文件,这将是一个共享的util项目,可以在其他项目中用作依赖项来运行他们的jmx文件。

这是我的pom依赖项:

代码语言:javascript
复制
<dependency>
    <groupId>org.apache.jmeter</groupId>
    <artifactId>ApacheJMeter_java</artifactId>
    <version>2.13</version>
    <exclusions>
        <exclusion>
            <artifactId>commons-math3</artifactId>
            <groupId>commons-math3</groupId>
        </exclusion>
        <exclusion>
            <artifactId>commons-pool2</artifactId>
            <groupId>commons-pool2</groupId>
        </exclusion>
    </exclusions>
</dependency>

<dependency>
    <groupId>org.apache.jmeter</groupId>
    <artifactId>ApacheJMeter_http</artifactId>
    <version>2.13</version>
    <exclusions>
        <exclusion>
            <artifactId>commons-math3</artifactId>
            <groupId>commons-math3</groupId>
        </exclusion>
        <exclusion>
            <artifactId>commons-pool2</artifactId>
            <groupId>commons-pool2</groupId>
        </exclusion>
    </exclusions>
</dependency>

<dependency>
    <groupId>org.apache.jmeter</groupId>
    <artifactId>ApacheJMeter_components</artifactId>
    <version>2.13</version>
    <exclusions>
        <exclusion>
            <artifactId>commons-math3</artifactId>
            <groupId>commons-math3</groupId>
        </exclusion>
        <exclusion>
            <artifactId>commons-pool2</artifactId>
            <groupId>commons-pool2</groupId>
        </exclusion>
    </exclusions>
</dependency>
<dependency>
    <groupId>org.apache.jmeter</groupId>
    <artifactId>ApacheJMeter_config</artifactId>
    <version>2.13</version>
    <exclusions>
        <exclusion>
            <artifactId>commons-math3</artifactId>
            <groupId>commons-math3</groupId>
        </exclusion>
        <exclusion>
            <artifactId>commons-pool2</artifactId>
            <groupId>commons-pool2</groupId>
        </exclusion>
    </exclusions>
</dependency>

正如您所看到的,我们使用的是JMeter v2.13,我不能升级,因为有数百个用这个版本编写的jmx,现在升级不是一个选项。

EN

回答 1

Stack Overflow用户

发布于 2018-07-03 07:45:08

您得到的错误是缺少JDBC连接配置类实现,为了能够使用它,您需要添加一个ApacheJMeter_jdbc依赖项,如下所示:

代码语言:javascript
复制
<dependency>
    <groupId>org.apache.jmeter</groupId>
    <artifactId>ApacheJMeter_jdbc</artifactId>
    <version>2.13</version>
</dependency>

根据JMeter最佳实践,您应该始终使用最新可用的JMeter版本,即JMeter 4.0,因此考虑将"JMeter“组件的<version>转换为4.0

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51148512

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档