2013-08-20 480 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 以使缺省情况下当前链接库的列表。
相关问题