Apache Ignite 和 Cassandra - NoClassDefFoundError

Apache Ignite and Cassandra - NoClassDefFoundError

我想评估将 Apache Ignite 与 Apache Cassandra 一起使用的性能增益。我从源代码构建了 Ignite,默认配置启动正常。从 example in the documentation 开始,我试图建立一个基本集群,但我一直在 java.lang.ClassNotFoundException 上使用 classes,因为例如 org.apache.ignite.cache.store.cassandra.utils.datasource.DataSource

我在提供的 jars 中搜索了 class 文件,相应地设置了环境变量(CLASSPATH 和 USER_LIBS)。尽管如此,Ignite 还是找不到它们。我正在使用 ignite 1.7 和 Oracle JDK 1.8.

如有任何建议,我们将不胜感激。谢谢。


更新

我尝试按照 README 文件中的建议将 ignite-cassandra 文件夹复制到 libs 文件夹中。尝试设置和不设置 IGNITE_HOME 环境变量,bin 和 src 分布,仍然找不到所需的 class。

ignite-cassandra 文件夹复制到 libs 一定有帮助。请注意,它必须在节点启动之前完成。还尝试取消设置 CLASSPATHUSER_LIBS 变量(如果它们仍然被修改)并让 ignite.sh 脚本创建类路径。只要您的 libs 文件夹结构正确,它应该会自动完成。

我发现了导致问题的原因。 Ignite文档页面中的example provided几个class的包结构有细微差别,例如:

  • org.apache.ignite.cache.store.cassandra.datasource.DataSource (ignite-cassandra.jar中的class)
  • org.apache.ignite.cache.store.cassandra.utils.datasource.DataSource(例子中的class)

示例中的其他 class 也是如此。我不知道这是否是由于对未通过示例传播的代码执行的重构,或者只是我使用了与我 运行.[=13= 对比的不同版本的文档]