2011-09-14 2 views
1

"단편 평가 오류"의 의미 또는 솔루션을 찾을 수있는 곳을 누군가에게 알려주시겠습니까?단편 평가 오류

[error] ! Fragment evaluation error 
[error]  ThrowableException: Could not initialize class code.model.Post$ (FutureTask.java:138) 
[error] code.model.PostSpec$$anonfun$1$$anonfun$apply$1.apply$mcZ$sp(PostSpec.scala:68) 
[error] code.model.PostSpec$$anonfun$1$$anonfun$apply$1.apply(PostSpec.scala:51) 
[error] code.model.PostSpec$$anonfun$1$$anonfun$apply$1.apply(PostSpec.scala:51) 

라인 PostSpec의 (68)이 포스트 모델 동반자 객체를 참조하는 (specs2) 시험의 첫 번째 행은 다음과 같습니다 :

가끔 (그러나 항상하지 않음) (내 코드를 변경하지 않고) 이러한 오류를 많이 얻을
val test4 = Post.fixJValue(toextract4).extract[Selection] 

저는 스칼라 2.9.0-1을 사용하고 있습니다.

는 또한 : 나는 그것이 문제인지 모르겠지만, 포스트는 net.liftweb.mongodb.record.MongoRecord 클래스 동반자 개체는 다음과 specs2 사양에서

object Post extends Post with MongoMetaRecord[Post] { ... } 
+0

specs 태그가 추가되었습니다. –

+0

다음은 [FutureTask.java의 소스 코드] (http://javasourcecode.org/html/open-source/jdk/jdk-6u23/java/util/concurrent/FutureTask.java.html)에 대한 편리한 링크입니다. 라인 138은 sync.innerRun()에 대한 호출입니다. 'public void run() { sync.innerRun(); }' – brandon

+0

mongo 및 specs2와 관련된 문제도 발생했습니다. – wbarksdale

답변

2

, Fragments는 사양의 조각이다. FragmentText, Example, Step 일 수 있습니다.

ExampleStep과 같은 일부 조각은 실행될 예정이며 예외로 설정되어 실패로 표시 될 수 있습니다. 그러나 그들은 Error을 잡을 수 없습니다 (AssertionError을 제외하고). 예를 들어 OutOfMemoryError을 던지면 조각 평가 오류로보고됩니다.

Text과 같은 다른 조각은 평가할 때 예외를 발생시키지 않습니다. 그렇게하면 Fragment evaluation error 메시지가 표시됩니다.

전체 사양을 보지 않고도 무슨 일이 일어나고 있는지 말할 수는 없지만 Example 본문에 던진 예외 유형이 아닌 것으로 판단됩니다.

  • test4 선언 :하지만 지금은 답변보다 더 많은 질문이? 본체 내부 사양? 케이스 클래스 Context 안에 있습니까?
  • 오류가 간헐적으로 발생하기 때문에 항상 적절한 mongodb 컨텍스트를 보유하고 있습니까? 어쩌면 당신의 명세 예제가 동일한 mongo db 인스턴스에서 동시에 실행되고 있습니까?
+0

'test4'는 사양 본문 내에 선언되어 있습니다. 이 경우, (Post.fixJValue (JValue) : JValue')를 호출하는 메소드는'Post' 객체 내부에 배치하기 편리했던 (... 잘 ...) 편리한 메소드 일뿐입니다. 그것은 mongodb에 실제로 아무 일도하지 않습니다. – brandon

+0

아마도 val을 게으른 val로 선언하려고 시도 할 수 있습니다. 예를 들어 실행 중 평가가 실제로 발생합니다. – Eric

+0

"컨텍스트"에 대한 귀하의 메모는 나를 새로운 방향으로 생각하고 검색하게했습니다. 나는 MongoMetaRecord 객체의 초기화가 문제를 일으킬 것이라고 생각한다. 그리고이 메소드를 해당 객체 밖으로 이동하면 문제가 해결 될 것입니다. – brandon