在Ubuntu上设置Java环境path时出现问题(libjvm.so:无法打开共享目标文件:没有这样的文件或目录)

find解决scheme!

Ubuntu默认情况下忽略命令“RD_LIBRARY_PATH”,因此我需要在“.bashrc”而不是“/ etc / environment”或.profile中添加这些代码。

它现在工作得很好!


我试图运行一个从C / C ++代码中读取Java方法的程序。 (我成功地在Windows上完成了,现在我正在使用Linux)

我成功编译并运行在Ubuntu上,但是,问题是..每当我尝试运行该程序,我必须在terminal上键入以下命令..

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

如果我每次启动我的电脑时都不input“source / etc / environment”,我得到的错误信息是…

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

好。 这是我在/ etc / environment中添加的内容

 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 

我想要的是,如你所知,我想运行该程序,而不input“源/ etc /环境”。 我也尝试在/ etc / profile上键入这些PATH,但结果是一样的…每次重新启动我的电脑时,我都应该input“source / etc / profile”。

如何使它永久适用于整个系统范围,而无需每次启动时input“source / etc / environment”东西?

如果你需要看到程序的源代码,这里是可下载的地址: http : //cfile237.uf.daum.net/attach/247819495212DF1C07B9EB

这对我工作:

对于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 

但是我使用Red Hat的时候遇到了同样的问题(永久性的),如果你在Ubuntu上查看永久的PATH,它可能会帮助你。 在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

在C代码中将“-Djava.library.path = FULL_PATH_HERE / jre / lib / amd64”作为JVM选项。

编辑full_path_here部分。

路径允许是相对的,但我不认为你可以使用$ JAVA_HOME作为环境变量的占位符。

找到解决方案!

Ubuntu默认情况下忽略命令“RD_LIBRARY_PATH”,因此我需要在“.bashrc”而不是“/ etc / environment”或.profile中添加这些代码。

它现在工作得很好!

  1. 在文件/etc/ld.so.conf中添加缺失库的路径
  2. 执行以下命令:ldconfig以这种方式,您将新的库添加到默认的库。
  3. 要检查新的库是否已经链接,请执行以下命令:ldconfig -p默认链接当前链接的库列表。