我的实习需要我熟悉cassandra。我从以下网站下载了astyanax cassandra: https://github.com/Netflix/astyanax
通过命令从源代码构建astyanax之后: git clone git@github.com:Netflix / astyanax.git cd astyanax ./gradlew build
我创建了一个新的java项目,并从这里复制+粘贴示例代码: https://github.com/Netflix/astyanax/blob/master/astyanax-examples/src/main/java/com/netflix/astyanax/examples/AstCQLClient.java
现在问题出现了。我确实修复了路径配置,它导入了从gradlew构建生成的所有.jar文件。但是一个(长)代码行用红色破折号突出显示:
context = new AstyanaxContext.Builder()
.forCluster("Test Cluster")
.forKeyspace("test1")
.withAstyanaxConfiguration(new AstyanaxConfigurationImpl()
.setDiscoveryType(NodeDiscoveryType.RING_DESCRIBE)
)
.withConnectionPoolConfiguration(new ConnectionPoolConfigurationImpl("MyConnectionPool")
.setPort(9160)
.setMaxConnsPerHost(1)
.setSeeds("127.0.0.1:9160")
)
.withAstyanaxConfiguration(new AstyanaxConfigurationImpl()
.setCqlVersion("3.0.0")
.setTargetCassandraVersion("1.2"))
.withConnectionPoolMonitor(new CountingConnectionPoolMonitor())
.buildKeyspace(ThriftFamilyFactory.getInstance());
警告信息是: org.apache.cassandra.thrift.Cassandra $ Client类型无法解析。它是从所需的.class文件间接引用的
我需要专家帮助。非常感谢!!!
答案 0 :(得分:3)
听起来你错过了thrift依赖(thrift jar文件)。或者你正在使用不兼容的节俭版本。简单的解决方案是使用Maven并将Astyanax依赖项添加到您的项目中。更复杂的解决方案是验证您导入的thrift版本是否与正在使用的Astyanax版本兼容。
Maven依赖(将其添加到您的pom文件中):
<dependency>
<groupId>com.netflix.astyanax</groupId>
<artifactId>astyanax</artifactId>
<version>1.56.42</version>
</dependency>
您可以使用Astyanax's wiki为Astyanax客户端制作兼容版本的Thrift。但是知道你从Github构建项目,你想要最新的与Cassandra兼容的节俭,所以你在Thrift 9.0+之后(例如libthrift-0.9.0.jar
)。
答案 1 :(得分:0)
我认为首先应该在本地安装Cassandra Server。您可以从Cassandra Repo找到最新来源。
然后您可以按照link配置Cassandra Server。虽然我不认为您必须更改配置文件中的任何内容,因为cassandra源已正确配置为在本地模式下运行。
然后从IDE创建一个Maven项目,添加@Lyuben Todorov所显示的依赖项,即
<dependency>
<groupId>com.netflix.astyanax</groupId>
<artifactId>astyanax</artifactId>
<version>1.56.42</version>
</dependency>
然后尝试Astyanax wiki
中的一些测试示例