2014-03-19 35 views
4

我想在Centos服務器上構建Casandra項目。我從這裏下載了這個文件。錯誤:無法找到或加載主類,Cassandra

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文件建議我按照這些說明爲適應我的情況(我不是根)。

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 

因爲我不是在服務器上的根,我無法創建/var文件夾下我的文件。因此,我在apache-cassandra-2.0.6-src下創建了新文件夾var,並將我的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) 

編輯: 作爲一個額外的信息了,我想在我的電腦的說明,太。與README.txt文件完全相同,使用sudo它工作。

+1

嗯。建議設置'CASSANDRA_HOME'在http://stackoverflow.com/questions/16851308/i-am-getting-this-error-when-i-am-starting-cassandra-server和http://stackoverflow.com/questions/3291474/cassandra-installation-issue help? –

+0

@JasonC我嘗試了你說的,沒有工作。 CLASSPATH = $ CLASSPATH:/ home/pat/to/lib(包括jar文件) – genclik27

+0

CASSANDRA_HOME呢? (順便說一句,'.jar'文件本身應該放在類路徑上,而不是放在它的路徑上;但是不要在這裏做 - 我懷疑正確設置CASSANDRA_HOME會爲你做所有事情,假定'cassandra'是一種根據該環境變量設置類路徑的腳本)。 –

回答

0

cassandra.yaml配置文件中,

commitlog_directory 
data_file_directories 
saved_caches_directory 

屬性更改爲您所指定的路徑,因爲它們不再/var/lib...

你需要將它們設置爲指向其實無論目錄是。

+0

我厭倦了這些,但我又得到了同樣的錯誤。正如我在問題中所說的,我也使用sudo在我的電腦上試過這些。所以,我認爲,錯誤應該是在某個地方esle – genclik27

+0

我嘗試從我的電腦上的所有,這一次它的工作。我想你是對的,它是關於一些新的var文件夾。但我該如何解決它? – genclik27

11

我看到你已經下載了源碼包(apache-cassandra-2.0.6-src.tar.gz),但你發佈的說明似乎認爲它已經被構建。

您需要構建源代碼包才能使用它;那裏會有一套單獨的說明。

我懷疑你寧願運行它,而不是從源代碼構建它。您可能打算下載二進制包apache-cassandra-2.0.6-bin.tar.gz(注意「bin」,而不是「src」 - 在從可下載存檔中的源文件中分離二進制文件時,這是一種傳統的命名約定)。有了這個軟件包,你可以直接運行它。對於源代碼包,您需要按照編譯指示先編譯cassandra。

我還懷疑你在PC端下載了二進制包,這就是它在那裏工作的原因。

如果你確實需要從源代碼編譯:

  1. 安裝antant-optional,如果你不已經擁有了它。
  2. 提取源存檔的地方,然後在基本目錄(其中build.xml是):

    ant release 
    
  3. 製作一杯咖啡(在末尾rat任務需要永遠)。
  4. 將在build中創建二進制檔案,並可在build/dist中找到構建的分佈。
+0

OMG!你是對的,這就是爲什麼它在我的電腦上工作。感謝您的答案,但實際上我需要從源代碼構建它才能夠使用jvmti代理。順便說一下,說明是一樣的。相同的readme.txt文件...我想怎麼知道現在該做什麼?爲什麼他們有相同的自述文件 – genclik27

+0

快速瀏覽一下源碼包在根目錄下顯示了一個'build.xml'。在那裏嘗試'ant release'(如果你還沒有安裝'ant')。我相信它會構建成一個'build'子目錄。 –

+0

當我嘗試螞蟻釋放時間時出現此錯誤。 '由於沒有找到支持的正則表達式匹配器,無法創建類型regexpmapper:java.lang.ClassNotFoundException:org.apache.tools.ant.util.regexp.Jdk14RegexpMatcher' – genclik27

5

做卡桑德拉

的出口CASSANDRA_HOME =位置

應該工作在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目錄執行導出命令,請將其設置爲空值。

0

我遇到了確切的問題,我想在沒有任何sudo權限的用戶空間中安裝cassandra。我做了以下

在cassandra.yaml我改變了以下配置到本地路徑

commitlog_directory 
data_file_directories 
saved_caches_directory 
log4j.appender.R.File 

安裝的「bin」 tar文件爲特定的操作系統env和不是「SRC」文件。

Export CASSANDRA_HOME=/userspace/cassandra-2.x 

現在它適用於我。

0

CASSANDRA_HOME的路徑對我來說不正確。在我設置正確的路徑後,它運行完美。

相關問題