我正在尝试从Eclipse(https://blazemeter.com/blog/5-ways-launch-jmeter-test-without-using-jmeter-gui)执行JMeter Test, 不幸的是,我有这样的信息:
Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/jmeter/engine/StandardJMeterEngine
这是我的代码:
public static void main(String[] args) throws Exception {
StandardJMeterEngine jmeter = new StandardJMeterEngine();
JMeterUtils.loadJMeterProperties("D:/JMeter_eng/bin/jmeter.properties");
JMeterUtils.setJMeterHome("D:/JMeter_eng");
JMeterUtils.initLocale();
SaveService.loadProperties();
// Load existing .jmx Test Plan
FileInputStream in = new FileInputStream("D:/projects/TestJmeterwithCodeJ.jmx");
HashTree testPlanTree = SaveService.loadTree(in);
in.close();
jmeter.configure(testPlanTree);
jmeter.run();
}
答案 0 :(得分:0)
虽然您的描述中没有立即清楚如何解决此错误,但这是一个常见问题。 This link是用于调试此错误的良好资源,但我也会在此处列出链接中的基本要素。
如果Java虚拟机或ClassLoader实例尝试加载类的定义,则抛出NoClassDefFoundError ...并且找不到类的定义。简单来说,该类在编译时可用,但在运行时期间丢失。
这意味着类路径中缺少jar文件。检查以确保编译代码的.jar文件存在于运行应用程序的环境中的类路径中。
还要检查是否缺少依赖jar,这不允许类构造函数初始化类对象。查看堆栈跟踪以查找直接依赖关系的递归依赖关系中的类(在您的情况下,直接依赖关系为StandardJMeterEngine
)
当您在堆栈跟踪中看到带有ExceptionInInitializerError的NoClassDefFoundError时,依赖类初始化失败。 NoClassDefFoundError只是一个症状。实际问题是我们需要查找和修复的ExceptionInInitializerError。
这意味着您将无效参数传递给构造函数,并且类没有正确处理它们并引发意外异常,或者内部类中还有其他错误。要修复它,要么更改依赖项的源代码并重新编译它(如果它是第三方依赖项,你可能会运气不好),或者通过传递不会导致问题的不同参数来解决它。 / p>