astyanax cassandra:无法解析org.apache.cassandra.thrift.cassandra$Client类型。它是从必需的.class文件间接引用的

astyanax cassandra:无法解析org.apache.cassandra.thrift.cassandra$Client类型。它是从必需的.class文件间接引用的,cassandra,gradle,astyanax,Cassandra,Gradle,Astyanax,我的实习需要我熟悉卡桑德拉。我从以下网站下载了astyanax cassandra: 通过以下命令从源代码构建astyanax后: git克隆git@github.com:Netflix/astyanax.git 阿斯蒂亚纳克斯光盘 /格拉德卢建筑 我创建了一个新的java项目,并从这里复制并粘贴示例代码: 现在问题出现了。我确实修复了路径配置,它导入了从gradlew构建生成的所有.jar文件。但有一行(长)代码用红色虚线突出显示: context = new AstyanaxContex

我的实习需要我熟悉卡桑德拉。我从以下网站下载了astyanax cassandra:

通过以下命令从源代码构建astyanax后: git克隆git@github.com:Netflix/astyanax.git 阿斯蒂亚纳克斯光盘 /格拉德卢建筑

我创建了一个新的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文件间接引用的


我需要专家的帮助。非常感谢

听起来您缺少了thrift依赖项(thrift jar文件)。要么是这样,要么你使用的是不兼容的节俭版本。简单的解决方案是使用Maven并将Astyanax依赖项添加到项目中。更复杂的解决方案是验证您导入的thrift版本是否与正在使用的Astyanax版本兼容

Maven依赖项(将其添加到pom文件):


com.netflix.astyanax

. 但是知道您是从Github构建项目的,您需要与Cassandra兼容的最新thrift,因此您需要thrift 9.0+(例如
libthrift-0.9.0.jar
)。

我认为首先您应该在本地服务器上正确安装Cassandra服务器。您可以从中找到最新的来源

然后,您可以按照以下步骤配置Cassandra服务器。尽管我认为您不必更改配置文件中的任何内容,因为cassandra source已正确配置为在本地模式下运行

然后从IDE创建一个Maven项目,添加@Lyuben-Todorov显示的依赖项,即

<dependency>
    <groupId>com.netflix.astyanax</groupId>
    <artifactId>astyanax</artifactId>
    <version>1.56.42</version>
</dependency>

com.netflix.astyanax

我要试试看。Thx老兄!
<dependency>
    <groupId>com.netflix.astyanax</groupId>
    <artifactId>astyanax</artifactId>
    <version>1.56.42</version>
</dependency>