2

scalatraドキュメントからscalatraspecs2の例を実行すると、この例外が発生します。

ThrowableException: org.eclipse.jetty.http.HttpGenerator.flushBuffer()I (FutureTask.java:138)

テストコードは次のとおりです(5行目から開始し、インポートをスキップします)。

class MyAppTest extends MutableScalatraSpec {
  addServlet(classOf[MyApp], "/*") 

  "GET / on AdminApp" should {
    "return status 200" in {
      get("/") { 
        status must_== 200
      }
    }
  }
}

アプリの定義は次のとおりです。

class MyApp extends ScalatraServlet {

  get("/") {
    "aloha"
  }
}

私はscalatra-specs22.0.4とscala2.9.1を使用しています。xsbt-web-plugin0.2.10とsbt0.11.2を使用して組み込みJettyサーバーを実行しています。テストはを使用して実行されsbt testました。

完全なトレースは次のとおりです。

[info] GET / on AdminApp should
[error] ! Fragment evaluation error
[error]     ThrowableException: org.eclipse.jetty.http.HttpGenerator.flushBuffer()I (FutureTask.java:138)
[error] org.eclipse.jetty.testing.HttpTester.generate(HttpTester.java:225)
[error] org.scalatra.test.ScalatraTests$class.submit(ScalatraTests.scala:46)
[error] com.example.MyAppTest.submit(MyAppTest.scala:5)
[error] org.scalatra.test.ScalatraTests$class.submit(ScalatraTests.scala:71)
[error] com.example.MyAppTest.submit(MyAppTest.scala:5)
[error] org.scalatra.test.ScalatraTests$class.get(ScalatraTests.scala:127)
[error] com.example.MyAppTest.get(MyAppTest.scala:5)
[error] com.example.MyAppTest$$anonfun$1$$anonfun$apply$3.apply(MyAppTest.scala:10)
[error] com.example.MyAppTest$$anonfun$1$$anonfun$apply$3.apply(MyAppTest.scala:10)
[error] org.eclipse.jetty.http.HttpGenerator.flushBuffer()I
[error] org.eclipse.jetty.testing.HttpTester.generate(HttpTester.java:225)
[error] org.scalatra.test.ScalatraTests$class.submit(ScalatraTests.scala:46)
[error] com.example.MyAppTest.submit(MyAppTest.scala:5)
[error] org.scalatra.test.ScalatraTests$class.submit(ScalatraTests.scala:71)
[error] com.example.MyAppTest.submit(MyAppTest.scala:5)
[error] org.scalatra.test.ScalatraTests$class.get(ScalatraTests.scala:127)
[error] com.example.MyAppTest.get(MyAppTest.scala:5)
[error] com.example.MyAppTest$$anonfun$1$$anonfun$apply$3.apply(MyAppTest.scala:10)
[error] com.example.MyAppTest$$anonfun$1$$anonfun$apply$3.apply(MyAppTest.scala:10)

これは、これまでに見つかった唯一の検索結果です: フラグメント評価エラー

誰かが私を正しい方向に向けることができますか?

ありがとう

4

2 に答える 2

1

根本的な原因はまだわかりませんが、jetty-webappを8.0.3.v20111011から7.6.0.v20120127にロールバックした後、テストは正常に実行されます。

于 2012-05-11T18:57:42.320 に答える
0

依存関係、より具体的にはJettyライブラリのバージョンとの競合が発生している可能性があります。の「flush」メソッドHttpGeneratorがJetty6とJetty7の間で変更されたため、例外メッセージで奇妙な「org.eclipse.jetty.http.HttpGenerator.flushBuffer()I」シグネチャを説明する「NoSuchMethodFoundError」が発生する可能性があります。

これは、あなたが言及したリンクで説明されているような通常の失敗ではなく、「フラグメント評価エラー」が発生する理由も説明しています。

最新のspecs2-1.10-SNAPSHOTを試してみると、「フラグメント評価エラー」のメッセージが改善され、「NoSuchMethodError」が表示されます。これにより、問題をより迅速に診断できます。

于 2012-05-10T23:03:09.000 に答える