2012-05-10 3 views
2
scalatra docs에서 scalatra specs2 예를 실행할 때 나는이 예외를 받고 있어요

발생간단한 scalatra 테스트 specs2 예는 예외

class MyApp extends ScalatraServlet { 

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

내가 scalatra-을 사용하고 있습니다 : 여기

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

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

앱 정의입니다 specs2 2.0.4 및 scala 2.9.1. 나는 xsbt-web-plugin 0.2.10과 sbt 0.11.2를 사용하여 임베디드 부두 서버를 운영 중이다. 테스트는 sbt test을 사용하여 실행되었습니다. Fragment Evaluation Error :

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

이 지금까지 켜져있는 유일한 검색 결과 :

여기에 전체 추적이다.

누군가 나를 올바른 방향으로 안내 할 수 있습니까?

덕분에, -f

+0

확실하지는 않지만 적절한 방파제 라이브러리를 사용하지 않았습니까? "flush"메서드가 부두 6과 부두 7 사이에서 변경되었음을 알았습니다. 이로 인해 이상한 "org.eclipse.jetty.http.HttpGenerator.flushBuffer() I"서명을 설명하는 "메서드를 찾을 수 없음 오류"가 발생할 수 있습니다. 예외 메세지. 이것은 또한 당신이 언급 한 링크에서 설명한 것처럼 이것이 왜 "단편 평가 오류"인지 설명 할 것입니다. – Eric

+0

최신 specs2-1.10-SNAPSHOT을 사용한다면 "NoSuchMethodError"를 보여주는 "fragment evaluation error"에 대한 더 나은 메시지를 얻을 수 있습니다. – Eric

+0

방금 ​​내 의견을 일반적인 대답으로 바꾸 었습니다. 그게 맞는 것 같아요 :-) – Eric

답변

0

당신은 아마 당신의 의존성에 충돌, 더 구체적으로와 부두 라이브러리 버전이있다. HttpGenerator의 "flush"메소드가 Jetty 6와 Jetty 7 사이에서 변경되었으므로 예외 메시지에서 이상한 "org.eclipse.jetty.http.HttpGenerator.flushBuffer() I"서명을 설명하는 "NoSuchMethodFoundError"가 표시 될 수 있습니다. .

이렇게하면 언급 한 링크에서 설명한 것처럼 "조각 평가 오류"가 발생하는 이유와 일반적인 오류가 아닌 이유에 대해서도 설명합니다.

최신 specs2-1.10-SNAPSHOT을 사용하면 "단편 평가 오류"가 발생했을 때 'NoSuchMethodError'가 표시되는 더 나은 메시지를 얻을 수 있습니다. 이렇게하면 문제를 빨리 진단하는 데 도움이됩니다.

+0

그것은 부두 도서관이었다. – fayvor

1

여전히 근본 원인은 확실하지만 테스트는 8.0.3.v20111011에서 7.6.0.v20120127로 돌아가는 jetty-webapp를 실행 한 후에 성공적으로 실행됩니다.

+0

더 나은 질문을 통해 질문에 대한 답변을 얻으십시오. http://stackoverflow.com/questions/how-to-ask –