2012-10-20 204 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或類路徑的問題。

相關問題