2012-10-20 169 views
4

仅在某些时间运行某些测试时出现错误java.lang.NoClassDefFoundErrorjava.lang.NoClassDefFoundError:无法初始化类

以下是设置: 测试是用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() 
+0

我认为这意味着你有一个Order中的内部类,它在初始化时失败。但这大概是一个Scalaism。 –

回答

0

您的订单类似乎森达一种代理人之一。它没有被初始化。

3

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

无论如何,初始化错误意味着'对象Order'在其构造函数中抛出了一个异常,所以看看你在那里使用了什么:可能JDBC类缺失?或者您正在通过类加载器检索的配置文件?

+1

我有一个类似的问题,但实际的例外没有打印。我不得不把每一行的“println”放在哪里,以找出它出错的地方! – Mahdi

0

我认为这个问题是这样的:

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

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

相关问题