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

在Ubuntu上设置Java环境路径时出现问题(libjvm.so:无法打开共享对象文件:没有这样的文件或目录),java,linux,ubuntu,environment-variables,java-home,Java,Linux,Ubuntu,Environment Variables,Java Home,找到了解决办法 Ubuntu默认情况下忽略命令“RD_LIBRARY_PATH”,因此我需要将这些代码添加到“.bashrc”中,而不是“/etc/environment”或.profile中 它现在工作得非常好 我试图运行一个程序,从C/C++代码中读取Java方法。(我在Windows上成功完成了,现在我在Linux上工作) 我成功地将其编译并在Ubuntu上运行,但问题是。。 每当我试图运行程序时,我必须在终端上键入以下命令 source /etc/environment ./invok

找到了解决办法

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

它现在工作得非常好


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

我成功地将其编译并在Ubuntu上运行,但问题是。。 每当我试图运行程序时,我必须在终端上键入以下命令

source /etc/environment
./invoke #program name is invoke
如果我没有在每次启动电脑时键入“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
我想要的是,正如您所知,我希望在不键入“source/etc/environment”的情况下运行程序。 我还尝试在/etc/profile上键入这些路径,但结果是一样的。。。每次重新启动电脑时,我都应该键入“source/etc/profile”

如何使其永久应用于整个系统,而无需每次启动时键入“source/etc/environment”之类的内容

如果您需要查看该程序的源代码,以下是可下载地址:

将“-Djava.library.path=FULL\u path\u HERE/jre/lib/amd64”作为C代码中的JVM选项

在此处编辑完整路径部分


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

我在设置路径(永久)时遇到了相同的问题,但是我使用的是Red Hat,如果您注意的话,它可能会对您有所帮助。Red Hat.profile上有一个文件,一旦添加导出语句,它们将在计算机启动时加载。:)应该有适合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"
export JAVA_HOME=/usr/lib/jvm/jdk1.7.0_25_x64

找到了解决方案

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

它现在工作得非常好

这对我很有用:

对于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
  • 在文件/etc/ld.so.conf中添加缺少的库的路径
  • 执行以下命令:ldconfig 这样,您就可以将新库添加到默认库中
  • 要检查新库是否已链接, 执行以下命令:ldconfig-p 使库列表在默认情况下处于链接状态

  • 我很抱歉它没能用。我将相应的C代码更改为选项[0]。选项字符串=“-Djava.library.path=/usr/lib/jvm/jdk1.7.0_25_x64/jre/lib/amd64/server”;但它不起作用。Xabster>在我将/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:/usr/bin:/sbin:/usr/games之后,它也不起作用“export JAVA_HOME=/usr/lib/jvm/jdk1.7.0_25_x64 export LD_LIBRARY_PATH=/usr/lib/jvm/jdk1.7.0_25_x64/jre/lib/amd64:/usr/lib/jvm/jd1.7.0_25_x64/jre/lib/amd64/server“请确认libjvm.so文件位于amd64/server文件夹中。我没想到它会在那里,但我可能错了。你告诉我的最后一件事我都不明白。您在etc/环境中做了哪些改变使其停止工作?我试图给您提供C代码,允许JVM在不更改全局环境变量的情况下查找libjvm.so文件。另外,请确认您在删除java.class.path VM选项后收到的错误相同。是的,libjvm.so文件位于amd64/server文件夹中。是的,同样的错误也发生了。这与SO无关,但这不是Ubuntu上的
    /etc/environment
    工作原理。它不是一个要来源的脚本文件,这就是为什么您在boot/login.Ok中使用的脚本文件不起作用。尝试在“~/.profile”中写入内容,但结果是一样的。我必须在每次重新启动时键入“~/.profile”以使其工作,否则它将无法工作。。问题是,如果我不键入“~/.profile”,然后键入“echo$LD_LIBRARY_PATH”,它将不显示任何内容。但是,如果我键入“~/.profile”,它会显示写在“~/.profile”中的路径。我想您编辑了.profile或.bash_profile,具体取决于您所编辑的是哪一个,这会给您一个想法。vi.bash_profile add:export[VARIABLE]=/VARIABLE/PATH/export PATH=${VARIABLE}/bin:$PATH然后esc:wq Enter