java - 通过 xrdp 登录时清除 LD_LIBRARY_PATH

标签 java c++ eclipse bash centos

背景:

我目前正在 Linux 虚拟机中使用一些 Java 插件,通过将它们放入 中,我将它们安装到 Eclipse 中。/opt/eclipse/dropins 文件夹。我的插件需要同时支持 CentOS 6 和 CentOS 7 虚拟机(应该没什么大不了的,因为它们是用 Java 编写的,而且两种 CentOS 都安装了 Java 1.8.0)。我的插件在两个操作系统上构建和安装都很好。我在 Eclipse 中看到了它们,并且可以按预期与它们进行交互。

我需要支持的 VM 可以位于我的机器本地(使用 VMWare Player/Workstation 打开),也可以托管在云服务器上。我们使用 Windows 远程桌面通过 Linux 服务器上的 xrdp 进入云 VM。

问题:

我的一个插件需要 nddsjava.so 来自 /opt/rti_connext_dds-5.2.3/lib/x64Linux3gcc4.8.2 .

在两个本地虚拟机(CentOS 6 和 7)上,我可以在/etc/profile.d 脚本中设置 LD_LIBRARY_PATH 以便任何登录的用户都可以获得所需 C++ 库的路径。

然而,在 CentOS 7 云虚拟机上,当调用此插件时,我得到 java.lang.UnsatisfiedLinkError: no nddsjava in java.library.path .发生这种情况仅限 通过 Linux 菜单打开 Eclipse 时。如果我打开一个终端并从那里启动 Eclipse,插件可以找到 C++ 库(因为我的 LD_LIBRARY_PATH 设置在我的/bin/bash 终端中)。我做了一点挖掘,发现运行 chmod g-s /usr/bin/ssh-agent修复了从 Linux 菜单打开 Eclipse 时的问题(是的,我知道 chmod 会打开一个安全漏洞。我愿意跳过这个)。

在 CentOS 6 云虚拟机上,我从来没有找到 C++ 库的插件。通过 登录时,LD_LIBRARY_PATH 似乎被清除了xrdp 无论出于何种原因,CentOS 6 似乎明确没有在主要的顶级 gnome-session 进程中获取任何配置文件脚本,这意味着从 GUI 产生的其他进程也不会有 LD_LIBRARY_PATH。

我也试过添加-Djava.library.path给我的eclipse.ini文件没有运气。即使它位于同一目录中,它也会在下一个所需的 C++ 库上失败:java.lang.UnsatisfiedLinkError: /opt/rti_connext_dds-5.2.3/lib/x64Linux3gcc4.8.2/libnddsjava.so: libnddsc.so: cannot open shared object file: No such file or directory
问题:

是否有一个地方可以为我尝试支持的所有 Linux 风格(本地 CentOS 6、xrdp CentOS 6、本地 CentOS 7 和 xrdp CentOS 7)设置我的 LD_LIBRARY_PATH?

最佳答案

注:当我在下面说云虚拟机时,我的意思是服务器托管的虚拟机,我通过 xrdp 进入了 Windows-远程桌面。

This服务器故障的答案在 CentOS 6 云虚拟机中为我工作。 CentOS 7 云虚拟机没有 startwm.sh /etc/xrdp 中的脚本.相反,它住在 /usr/libexec/xrdp并且不包含 xinitrc导致 CentOS 6 云虚拟机出现问题的行(在服务器故障链接中引用)。必须有其他东西在 CentOS 7 云虚拟机中删除 LD_LIBRARY_PATH 变量,所以我仍然需要执行 chmod g-s /usr/bin/ssh-agent允许我的/etc/profile.d启动时调用的脚本。

关于java - 通过 xrdp 登录时清除 LD_LIBRARY_PATH,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48749389/

相关文章:

java - Chrome 用 selenium 打开 "Data;"地址

java - 如何获取按钮的当前文本颜色?

c++ - 查找数据集 C++ 模式的更好方法

c++ - 寻找将取代功能的宏

java - 当客户端更改 IP 地址或断开连接时,是否热衷于捕获 websocket-close 事件?

java - 如何用英语句子检测产品的特征 - nlp

c++ - unique_ptr 住在哪里?

java - 如何使用 Gradle 运行 Jetty

jquery - 打开 jquery.min.js 后 Eclipse 变得非常慢

android - 将 Actionbarsherlock 导入到 Eclipse 中