2013-08-20 482 views
2

找到解決方案!在Ubuntu上設置Java環境路徑時出現問題(libjvm.so:無法打開共享目標文件:無此文件或目錄)

Ubuntu默認忽略命令「RD_LIBRARY_PATH」,因此我需要在「.bashrc」而不是「/ etc/environment」或.profile中添加這些代碼。

它現在工作得很好!


我想運行一個從C/C++代碼中讀取Java方法的程序。 (我成功地在Windows上創建了它,現在,我正在使用Linux)

我使它成功編譯並運行在Ubuntu上,但是,問題是...... 每當我嘗試運行該程序時,必須鍵入在終端下面的命令..

source /etc/environment 
./invoke #program name is invoke 

如果我不鍵入「源的/ etc /環境」每次我啓動我的電腦時,該錯誤消息我得到的是...

error while loading shared libraries: libjvm.so: cannot open shared object file: No such file or directory 

確定。以下是我在/ etc /環境添加

export PATH="$PATH:/usr/lib/jvm/jdk1.7.0_25_x64/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games" 
export JAVA_HOME=/usr/lib/jvm/jdk1.7.0_25_x64 
export LD_LIBRARY_PATH=$JAVA_HOME/jre/lib/amd64:$JAVA_HOME/jre/lib/amd64/server 

我想的是,如你所知,我想無需鍵入「源的/ etc /環境」運行程序。 我也嘗試在/ etc/profile上鍵入這些路徑,但結果是一樣的......每次重新啓動我的PC時,我都應該輸入「source/etc/profile」。

如何使其永久應用於整個系統的範圍,而無需鍵入「源/ etc /環境」東西每次我開機?

,如果你需要看程序的源代碼,這裏是下載地址: http://cfile237.uf.daum.net/attach/247819495212DF1C07B9EB

+0

這對於SO來說是無關緊要的,但這不是*/*如何在Ubuntu上啓動/ etc/environment。這不是一個腳本文件來源,這就是爲什麼你在那裏沒有啓動/登錄工作。 –

回答

0

找到了解決辦法!

Ubuntu默認忽略命令「RD_LIBRARY_PATH」,因此我需要在「.bashrc」而不是「/ etc/environment」或.profile中添加這些代碼。

它現在工作得很好!

0

PUT 「-Djava.library.path = FULL_PATH_HERE/JRE/lib目錄/ AMD64」 作爲你的C JVM選項碼。

編輯full_path_here部分。

該路徑被允許是相對的,但我不認爲您可以使用$ JAVA_HOME作爲環境變量的佔位符。

+0

Xabster>我很抱歉它沒有工作。我將相應的C代碼改爲options [0] .optionString =「-Djava.library.path =/usr/lib/jvm/jdk1.7.0_25_x64/jre/lib/amd64/server」;但它不起作用。 –

+0

Xabster>在將/ etc/environment更改爲「export PATH =」$ PATH後,它也不起作用:/usr/lib/jvm/jdk1.7.0_25_x64/bin:/ usr/local/sbin:/ usr/local/bin/usr/bin:/ sbin:/ bin:/ usr/games「 .7.0_25_x64/jre/lib/amd64:/usr/lib/jvm/jdk1.7.0_25_x64/jre/lib/amd64/server「 –

+0

請確認libjvm.so文件位於amd64/server文件夾中。我沒有想到它會在那裏,但我可能是錯的。我不明白你告訴我的最後一件事。你在etc/environment中改變了什麼,導致它停止工作?我試圖給你C代碼,這將允許JVM找到libjvm.so文件,而無需更改全局環境變量。另請確認您從移除java.class.path VM選項後得到相同的錯誤。 – Xabster

1

我有同樣的問題設置路徑(永久),但我使用紅帽,如果你看看change PATH permanently on Ubuntu它可能會幫助你。在Red Hat .profile上有一個文件,一旦你添加了你的exports語句,它們將在計算機啓動時加載。 :)應該有類型的文件的Ubuntu

export  PATH="$PATH:/usr/lib/jvm/jdk1.7.0_25_x64/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games" 

出口JAVA_HOME =/usr/lib目錄/ JVM/jdk1.7.0_25_x64

+1

好的。試圖在「〜/ .profile」中寫入東西但是它們是一樣的。我必須在每次重新啓動以使其工作時輸入「。〜/ .profile」,否則它不起作用。問題是,如果我不鍵入「〜/ .profile」,然後鍵入「echo $ LD_LIBRARY_PATH」 ,它什麼也沒有顯示。然而,如果我輸入「。〜/ .profile」,那麼它顯示PATH寫在「〜/ .profile」 –

+0

我想你編輯.profile或.bash_profile取決於你有哪一個,這會給你一個idea.vi .bash_profile add:export [VARIABLE] =/variable/path/ export PATH = $ {VARIABLE}/bin:$ PATH Then esc:wq Enter – LeandreM

9

這爲我工作:

對於x86:

export LD_LIBRARY_PATH=/usr/lib/jvm/default-java/jre/lib/i386:/usr/lib/jvm/default-java/jre/lib/i386/server 

對於x86_64的

export LD_LIBRARY_PATH=/usr/lib/jvm/default-java/jre/lib/amd64:/usr/lib/jvm/default-java/jre/lib/amd64/server 
0
  1. 添加缺少的庫的路徑在文件/ etc /ld.so.conf
  2. 執行以下命令:ldconfig 這樣,您會將新庫添加到默認庫。
  3. 要檢查新庫是否已鏈接,請執行以下命令:ldconfig -p 以使缺省情況下當前鏈接庫的列表。
相關問題