如何在Eclipse中使用JMeter修复NoClassDefFoundError

时间:2016-02-04 16:03:52

标签: java eclipse

我正在尝试从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();

}

1 个答案:

答案 0 :(得分:0)

虽然您的描述中没有立即清楚如何解决此错误,但这是一个常见问题。 This link是用于调试此错误的良好资源,但我也会在此处列出链接中的基本要素。

什么是NoClassDefFoundError?

  

如果Java虚拟机或ClassLoader实例尝试加载类的定义,则抛出NoClassDefFoundError ...并且找不到类的定义。简单来说,该类在编译时可用,但在运行时期间丢失。

由ClassNotFoundException引起的NoClassDefFoundError

这意味着类路径中缺少jar文件。检查以确保编译代码的.jar文件存在于运行应用程序的环境中的类路径中。

还要检查是否缺少依赖jar,这不允许类构造函数初始化类对象。查看堆栈跟踪以查找直接依赖关系的递归依赖关系中的类(在您的情况下,直接依赖关系为StandardJMeterEngine

由ExceptionInInitializerError

引起的NoClassDefFoundError
  

当您在堆栈跟踪中看到带有ExceptionInInitializerError的NoClassDefFoundError时,依赖类初始化失败。 NoClassDefFoundError只是一个症状。实际问题是我们需要查找和修复的ExceptionInInitializerError。

这意味着您将无效参数传递给构造函数,并且类没有正确处理它们并引发意外异常,或者内部类中还有其他错误。要修复它,要么更改依赖项的源代码并重新编译它(如果它是第三方依赖项,你可能会运气不好),或者通过传递不会导致问题的不同参数来解决它。 / p>