2017-03-26 4 views
0

제 프로젝트에서 고양이 0.7.8과 스칼라 2.11.8을 사용하고 있습니다. 내가 build.sbt 파일로 업데이트 한 다음고양이를 0.7.8에서 0.9.0으로 업그레이드 할 수 없습니다.

"org.typelevel" % "cats-core_2.11" % "0.7.8" 

"org.typelevel" % "cats-core_2.11" % "0.9.0" 

에서 내 고양이 의존성을 변경하면 내가 문제가

[error] bad symbolic reference to cats.data.Xor encountered in class file 'Parser.class'. 
[error] Cannot access type Xor in package cats.data. The current classpath may be 
[error] missing a definition for cats.data.Xor, or Parser.class may have been compiled against a version that's 
[error] incompatible with the one found on the current classpath. 
[error] one error found 
[error] (compile:compile) Compilation failed 

오류를 얻을 sbt clean compile을하려고 Parser.class는 컴파일러가 말하는 사람이 아닙니다. 나는 우리 자신의 소스 코드 기반에 Parser.class가 없다는 것을 확신한다. 우리 코드는 오래된 Xor 클래스의 Cats를 사용하지 않습니다. (비록 우리가 아직 Scala 2.12를 사용하지 않았기 때문에 가능합니다).

답변

1

아마도 당신이 사용하는 다른 라이브러리는 고양이뿐입니다. 자신의 라이브러리를 추가하여 Cats 버전을 제거 했으므로이 라이브러리는 컴파일러에서 최신 버전을 사용하면서 이전 버전과 링크하려고합니다.

https://github.com/jrudolph/sbt-dependency-graph과 같은 SBT 플러그인을 사용하여 전체 관계 그래프를 인쇄하고 어떤 라이브러리가 고양이에 의존하는지 확인할 수 있습니다. 아마도 그들 중 하나 옆에 단어 evicted이 당신이 제공 한 고양이의 다른 버전과 연결된다는 것을 의미합니다.

라이브러리 (ori 라이브러리)를 찾으면 최신 고양이와 링크되는 최신 버전으로 업데이트하십시오. 그것이 내가 다른 의존성을 보지 않고 말할 수있는 전부입니다.

+0

예. dependencyTree는 축출 된 라이브러리를 보여줍니다. 해당 버전을 업그레이드 할 수 있었으며 업그레이드가 성공적이었습니다. –