Caused by: java.lang.UnsatisfiedLinkError: no snappyjava in java.library.path 에러
general java 2014. 5. 14. 14:53Cassandra Test Case 실행시 아래와 같은 에러가 발생할 수 있다. (나는 cassandra 2.0.2를 사용중이다.)
Caused by: java.lang.UnsatisfiedLinkError: no snappyjava in java.library.path
이 문제는 아래 버그 리포트에도 나타나 있지만. snappy java 문제는 cassandra 가 아니라 snappy java wkcp 버그이다..
https://issues.apache.org/jira/browse/CASSANDRA-4400
https://github.com/xerial/snappy-java/issues/12
이를 해결하기 위해서는 snappy버전을 1.0.5-M4로 올리고, netty 3.x 를 포함시킨후, snappyjava를 include했던 기존 라이브러리에서 snappyjava를 exclusion을 해야 compile 및 실행이 문제 없다.
<!-- 추가 -->
<dependency>
<groupId>org.xerial.snappy</groupId>
<artifactId>snappy-java</artifactId>
<version>1.0.5-M4</version>
</dependency>
<dependency>
<groupId>org.jboss.netty</groupId>
<artifactId>netty</artifactId>
<version>3.1.0.GA</version>
</dependency>
<!-- 수정 -->
<dependency>
<groupId>com.netflix.astyanax</groupId>
<artifactId>astyanax</artifactId>
<version>1.56.44</version>
<exclusions>
<exclusion>
<artifactId>snappy-java</artifactId>
<groupId>org.xerial.snappy</groupId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.apache.cassandra</groupId>
<artifactId>cassandra-all</artifactId>
<version>2.0.2</version>
<exclusions>
<exclusion>
<artifactId>snappy-java</artifactId>
<groupId>org.xerial.snappy</groupId>
</exclusion>
</exclusions>
</dependency>
참고로 netty를 포함해서 컴파일하지 않으면, 아래 에러가 발생한다. 최신버전은 io.netty로 수정되었기 때문에 버전은 약간 낮은게 낫다.
java.lang.NoSuchMethodError: org.jboss.netty.handler.codec.frame.LengthFieldBasedFrameDecoder.<init>(IIIIIZ)V