2011-12-20 55 views
3

我很痛苦安裝scribe & hdfs。值得欣賞,我解決了大部分問題。但是,我被困在這裏。「java/lang/NoClassDefFoundError:java/lang/Object」運行時JNI程序

我安裝libhdfs,我寫一個 「Hello World」 測試:

Error occurred during initialization of VM 
java/lang/NoClassDefFoundError: java/lang/Object

我發誓我已經設置CLASSPATH

#include <iostream> 
#include <string> 
using namespace std; 
#include "hdfs.h" 

int main(int argc,char *argv[]){ 
    string host = "10.210.74.143"; 
    int port = 9000; 
    hdfsFS fs = hdfsConnect(host.c_str(),port); 
    return 0; 
} 

當我運行它,它打印此味精

+0

通常當我看到無法找到java/lang/Object時,意味着它找不到Java運行時環境(又名JVM)。 – 2011-12-20 21:47:51

回答

0

首先,您正在運行C程序,而不是使用Java程序中的動態庫。那真的是你想要做的嗎?

如果是這樣,也許你需要明確地創建一個JVM(有趣): 請參閱http://www.inonit.com/cygwin/jni/invocationApi/c.html除非hdfsConnect函數爲你做。

+0

hdfsConnect會爲我創建一個JVM。我解決了這個問題,libhdfs獲取了某個路徑中的jar,而不是CLASSPATH,我不知道原因。 – renenglish 2011-12-21 04:47:31

+0

我複製了你在http://www.inonit.com/cygwin/jni/invocationApi/c.html中的代碼,然後編譯它: gcc -o hello hello.c -I/usr/java/jdk1。 6.0_25/include/-I/usr/java/jdk1.6.0_25/include/linux -L /usr/java/jdk1.6.0_25/jre/lib/amd64/server/ -ljvm 但是當我運行./打印: 虛擬機初始化時發生錯誤 無法加載本機庫:/usr/libjava.so:無法打開共享目標文件:沒有這樣的文件或目錄 – renenglish 2011-12-21 08:22:08

+0

@renenglish,所以他們尋找特定路徑中的jar ,嗯?無賴。至於沒有找到libjava.so,我認爲JAVA_HOME可能沒有正確設置。在Windows上,庫(java.dll)將位於JAVA_HOME \ bin – 2011-12-22 20:32:01