2015-01-13 5 views
4

Spark와 Scala를 사용할 때 이상한 오류가 발생합니다.변수를 선언 할 때 NoSuchMethodError

var offset = 0 

이 다음과 같은 예외가 발생합니다 : 나는 변수를 선언 코드 조각이

java.lang.NoSuchMethodError: scala.runtime.IntRef.create(I)Lscala/runtime/IntRef; 
    at my.package.MyClass$class.myMethod(MyClass.scala:5) 
    ... 

을 그리고 변수 선언에 직접 가리 킵니다. Scala 2.11.2를 사용하고 있습니다. 컴파일 작업. 이것은 런타임 오류입니다. sbt package을 실행할 때 종속성/버전 불일치 경고가 표시되지 않습니다.

+0

이것은 거의 확실한 스칼라 버전 불일치입니다. v2.10과 v2.11에서 IntRef의 정의를 비교해 보면, 'create'는 후자의 버전에서만 도입되었다는 것을 알 수 있습니다 (https://github.com/scala/scala/blob/v2.10.4/ 참조). src/library/scala/runtime/IntRef.java 및 https://github.com/scala/scala/blob/v2.11.0/src/library/scala/runtime/IntRef.java). 당신은 당신의 의존성 중 일부가 스칼라 버전 <2.11.0에 대해 컴파일되었다는 것을 내기 할 수 있습니다. 당신은 전이 의존성을 검사하기 위해 sbt-dependency-graph (https://github.com/jrudolph/sbt-dependency-graph)를 시도하고 싶다. –

+0

네가 옳았다. 레기 스. 스칼라 버전을 2.10.4로 변경하고 예상대로 작동하기 시작했습니다. 답변으로 의견을 말하면 받아 들일 것입니다. – tolgap

답변

12

이것은 거의 확실한 스칼라 버전 불일치입니다. v2.10과 v2.11에서 IntRef의 정의를 비교하면 create이 후자 버전에서만 도입 된 것을 볼 수 있습니다 (https://github.com/scala/scala/blob/v2.10.4/src/library/scala/runtime/IntRef.javahttps://github.com/scala/scala/blob/v2.11.0/src/library/scala/runtime/IntRef.java 참조). 종속성 중 일부가 scala 버전 < 2.11.0에 대해 컴파일되었을 수 있습니다. 전이 의존성을 검사하기 위해 sbt-dependency-graph (https://github.com/jrudolph/sbt-dependency-graph)를 시도 할 수 있습니다.

관련 문제