如何只在Java主进程上设置共享库?



在Linux下,我有一个Java进程,它的一个插件依赖于libgtk-*.so共享库。目前我们使用$LD_LIBRARY_PATH$LD_PRELOAD来设置共享库的路径。但是如果Java进程打开子进程,那么它们也会设置这些envs,这会导致不想要的结果。

在任何其他编程语言(如Python)中,只要Java进程开始运行,我就会取消这两个env的设置。但是看起来Java不允许你在运行时修改envs。

是否有可能提供共享库作为Java参数之一?有没有其他方法来设置这个共享库仅为Java进程,而不是任何子进程?

您可以直接调用动态链接器,并要求它为您的可执行文件预加载某些库:

/lib64/ld-linux-x86-64.so.2 --preload /lib/x86_64-linux-gnu/libc.so.6 /bin/ls

最新更新