错误:无法找到或加载主类,Cassandra

时间:2014-03-19 16:53:04

标签: java cassandra

我正在尝试在Centos服务器上构建Casandra项目。我从这里下载了文件。

http://apache.bilkent.edu.tr/cassandra/2.0.6/

这是README.txt文件

This short guide will walk you through getting a basic one node cluster up
and running, and demonstrate some simple reads and writes.

  * tar -zxvf apache-cassandra-$VERSION.tar.gz
  * cd apache-cassandra-$VERSION
  * sudo mkdir -p /var/log/cassandra
  * sudo chown -R `whoami` /var/log/cassandra
  * sudo mkdir -p /var/lib/cassandra
  * sudo chown -R `whoami` /var/lib/cassandra

Note: The sample configuration files in conf/ determine the file-system 
locations Cassandra uses for logging and data storage. You are free to
change these to suit your own environment and adjust the path names
used here accordingly.

Now that we're ready, let's start it up!

  * bin/cassandra -f

正如README.txt文件建议我按照这些说明调整我的情况(我不是root)。

tar -zxvf apache-cassandra-2.0.6-src.tar.gz
cd apache-cassandra-2.0.6-src
mkdir -p var/log/cassandra
chown -R `whoami` var/log/cassandra
mkdir -p var/lib/cassandra
chown -R `whoami` var/lib/cassandra

由于我不是服务器上的root用户,因此无法在/var文件夹下创建文件。因此,我在var下创建了新文件夹apache-cassandra-2.0.6-src,并将liblog文件放在那里。然后我按照README.txt文件中的下一条说明进行操作。

bin/cassandra -f

然而无论我尝试过什么都没有用,我总是得到这个错误。

Error: Could not find or load main class org.apache.cassandra.service.CassandraDaemon

如何解决此问题?

我的java版

java -version

java version "1.7.0_51"
OpenJDK Runtime Environment (rhel-2.4.4.1.el6_5-x86_64 u51-b02)
OpenJDK 64-Bit Server VM (build 24.45-b08, mixed mode)

修改 作为额外的信息,我也在我的电脑上试过这个说明。使用sudo的README.txt文件完全相同。

6 个答案:

答案 0 :(得分:12)

我看到你已经下载了源包( apache-cassandra-2.0.6-src.tar.gz ),但你发布的说明似乎认为它已经构建完毕。

您需要先构建源包,然后才能使用它;那个地方会有一套单独的指示。

我怀疑你只是运行它而不是从源代码构建它。您可能打算下载二进制包apache-cassandra-2.0.6-bin.tar.gz(注意" bin",not" src" - 这是在可下载时从源中分离二进制文件时的传统命名约定档案)。使用该软件包,您可以直接运行它。对于源包,您需要按照构建说明首先编译cassandra。

我还怀疑你在PC端下载了二进制包,这就是它在那里工作的原因。

如果您确实需要从源代码构建:

  1. 安装antant-optional(如果您还没有)。
  2. 在某处提取源存档,然后在基本目录(build.xml所在的位置)中提取:

    ant release
    
  3. 喝一杯咖啡(最后的rat任务需要永远)。
  4. 将在build中创建二进制存档,并在build/dist中找到已构建的分发。

答案 1 :(得分:6)

导出CASSANDRA_HOME = cassandra的位置

应该在2.0.6中工作,我在不设置该变量的情况下进行了验证,然后设置了这些变量。

$ export CASSANDRA_HOME=/usr/local/cassandra/dsc-cassandra-2.0.6
$ /usr/local/cassandra/dsc-cassandra-2.0.6/bin/cassandra


or
$ cd /usr/local/cassandra/dsc-cassandra-2.0.6
$ export CASSANDRA_HOME=
$ bin/cassandra

实际上你也可以在cassandra-2.0.6目录中设置CASSANDRA_HOME =。如果从cassandra目录执行export命令,则将其设置为空值。

答案 2 :(得分:0)

cassandra.yaml配置文件中,更改

commitlog_directory
data_file_directories
saved_caches_directory

属性到您指定的路径,因为它们不再是/var/lib...

您需要将它们设置为指向目录的实际位置。

答案 3 :(得分:0)

我遇到了确切的问题,我想在没有任何sudo权限的用户空间中安装cassandra。我做了以下

在cassandra.yaml中,我将以下配置更改为本地路径

commitlog_directory
data_file_directories
saved_caches_directory
log4j.appender.R.File

安装" bin"特定操作系统env的tar文件,而不是" src"文件。

Export CASSANDRA_HOME=/userspace/cassandra-2.x

现在它适用于我。

答案 4 :(得分:0)

CASSANDRA_HOME的路径对我来说不正确。在我设置正确的路径后,它运行得很好。

答案 5 :(得分:0)

我在使用 Jdk 1.8_281 版本时遇到了同样的问题。 降级到jdk 1.8_241版本后问题解决。