java.lang.NoClassDefFoundError:无法初始化类

时间:2012-10-20 12:07:14

标签: java scala noclassdeffounderror

在运行某些测试 时,我收到错误java.lang.NoClassDefFoundError

这是设置: 测试是用Scala和Scala和Java编写的。使用蚂蚁和常春藤。

Order.scala 看起来像这样:

  object Order extends JdbcEnabled {

  val orderServiceClientIpAddress = Network.localIpAddress
  val PersonalOffersSaleId = "123"
  lazy val checkoutClient = new CheckoutClientImpl(YamlConfigFactory.loadConfig(
    this.getClass.getClassLoader.getResourceAsStream("core_config.yaml")
  ).getRequiredSubConfig("core").getRequiredSubConfig(Environment.HostEnv))


  val storeList = new JLinkedList[Store]()
  storeList.add(OrderHelper.getSelectedStore)
  var skuList = OrderHelper.getAvailableSkus
  val skusForInternationalOrders = skuList


  def createOrder(){...}}

TestNG运行了许多测试。有时所有测试都没有任何问题,但有时它们会因此异常而失败。

以下是测试在失败时调用Order api的片段。

val orderNumber = Order.createOrder()

当测试失败时,这是整个堆栈跟踪:

java.lang.NoClassDefFoundError: Could not initialize class com.api.Order$
    at com.CreateOrder.setUpOnce(CreateOrder.scala:35)

该类中的第35行,CreateOrder.scala是:

val orderNumber = Order.createOrder()

4 个答案:

答案 0 :(得分:3)

这可能不是你的整个类路径,你必须在某个地方找到缺少的类的名称(可能在'由...引起'之后)。也许TestNG可以配置为显示完整的堆栈跟踪。

无论如何,初始化程序错误意味着'对象顺序'在其构造函数中引发了异常,因此请查看您在那里使用的内容:可能缺少JDBC类?或者您通过类加载器检索的配置文件?

答案 1 :(得分:0)

您的订单类似乎是某种代理类。它没有初始化。

答案 2 :(得分:0)

我认为问题是:

  lazy val checkoutClient = new CheckoutClientImpl(YamlConfigFactory.loadConfig(
    this.getClass.getClassLoader.getResourceAsStream("core_config.yaml")
  ).getRequiredSubConfig("core").getRequiredSubConfig(Environment.HostEnv))

正如他们所说herehere,似乎是 getClassLoader 或类路径的问题。

答案 3 :(得分:0)

通常,当您的单例对象中存在未捕获的异常时,就会发生此类问题。尝试在内部放入try catch子句以获取错误的根源。