7

java.lang.NoClassDefFoundErrorいくつかのテストを数回だけ実行するとエラーが発生します

セットアップは次のとおりです。テストは、Scala と Java のサービスを使用して Scala で記述されます。アリとアイビーも使用。

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

4 に答える 4

4

それはおそらくクラスパス全体ではありません。欠落しているクラスの名前がどこかにある必要があります(おそらく「原因..」の後)。完全なスタック トレースを表示するように TestNG を構成できるかもしれません。

とにかく、初期化エラーは、「オブジェクト Order」がそのコンストラクターで例外をスローしたことを意味するので、そこで使用しているものを見てください: JDBC クラスが欠落している可能性がありますか? または、クラスローダーを介して取得している構成ファイルですか?

于 2012-10-21T11:25:30.280 に答える
0

あなたの Order クラスは、一種のプロキシのようです。初期化されていません。

于 2012-10-20T15:54:20.273 に答える