我在从 Jenkins 运行作业时遇到 java.lang.UnsatisfiedLinkError 问题。
<error message="no JSTAF in java.library.path" type="java.lang.UnsatisfiedLinkError">java.lang.UnsatisfiedLinkError: no JSTAF in java.library.path
at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1681)
at java.lang.Runtime.loadLibrary0(Runtime.java:840)
at java.lang.System.loadLibrary(System.java:1047)
基本上我需要设置 LD_LIBRARY_PATH
并且设置后,它可以在命令行执行时正常工作。例如,当我像下面这样设置 LD_LIBRARY_PATH
时:
export LD_LIBRARY_PATH=</proj/lib>:$LD_LIBRARY_PATH
设置后,代码从命令行执行正常。
我尝试使用 EnvInjectPlugin
设置此 LD_LIBRARY_PATH
并注入(inject) LD_LIBRARY_PATH
。
我仍然不确定为什么 Jenkins 没有选择这个 LD_LIBRARY_PATH
。如何设置它以便 Jenkins 作业执行正常工作?
最佳答案
我昨天在这里发布了一个类似问题的答案:KDevelop4: Error while loading shared libraries
实际上,LD_LIBRARY_PATH 在许多 Linux 操作系统中已被弃用。为此使用/etc/ld.so.conf.d 中的配置文件并在启动 Jenkins 之前运行 ldconfig
。 (见上面引用的帖子)
编辑[解决方案]:
在聊天中讨论后,问题已通过添加解决:
#!/bin/bash
export LD_LYBRARY_PATH=${LD_LIBRARY_PATH}:<myPathForJenkins>
在 /etc/profile.d/ 中的一个简短脚本中,并使用 chmod +x
将其设置为可执行
关于java - 如何在 Jenkins 上设置 LD_LIBRARY_PATH,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21444198/