【问题标题】:java.lang.NoClassDefFoundError: Could not initialize classjava.lang.NoClassDefFoundError:无法初始化类
【发布时间】:2012-10-10 21:28:59
【问题描述】:

我在运行某些测试时遇到错误java.lang.NoClassDefFoundError只有几次。

设置如下: 测试使用 Scala 编写,服务使用 Scala 和 Java。也使用 ant 和 ivy。

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 的 sn-p。

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()

【问题讨论】:

  • 我认为这意味着您在 Order 中有一个内部类在初始化期间失败。但这大概是一种 Scalaism。

标签: java scala noclassdeffounderror


【解决方案1】:

您的 Order 类似乎是一种代理类。它没有被初始化。

【讨论】:

    【解决方案2】:

    这可能不是你的整个类路径,你必须在某处有丢失类的名称(可能在'caused by..'之后)。也许可以将 TestNG 配置为向您显示完整的堆栈跟踪。

    不管怎样,初始化错误意味着'object Order'在它的构造函数中抛出了一个异常,所以看看你在那里使用的是什么:也许 JDBC 类丢失了?还是您通过类加载器检索的配置文件?

    【讨论】:

    • 我遇到了类似的问题,但没有打印出实际的异常。我必须每隔一行输入“println”才能找出问题所在!
    【解决方案3】:

    我认为问题是这样的:

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

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

    【讨论】:

      【解决方案4】:

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

      【讨论】:

        猜你喜欢
        • 2013-08-08
        • 2020-09-27
        • 2012-08-26
        • 2015-10-29
        • 2017-09-12
        • 2016-07-07
        • 2018-08-01
        • 2010-12-29
        相关资源
        最近更新 更多