使用lttng-ust JUL追踪Java应用报错:找不到lttng-ust-jul-jni
解决方案与排查思路
1. 确认lttng-ust JNI本地库已安装
错误提示找不到lttng-ust-jul-jni,说明系统缺少对应的本地库文件(.so)。在Photon OS 5上执行以下操作:
- 搜索相关软件包:
tdnf search lttng-ust-jni - 安装匹配的包(通常名为
lttng-ust-agent-jni):tdnf install lttng-ust-agent-jni - 验证库文件位置:
记录输出的路径(例如find /usr -name "liblttng-ust-jul-jni.so"/usr/lib64或/usr/lib)。
2. 让Java定位到本地库
Java的java.library.path未包含库所在目录,需手动指定:
方法一:运行时添加参数
使用-Djava.library.path参数指定库路径,同时确保类路径正确:
java -Djava.library.path=/path/to/library/dir -classpath "$CLASSPATH" Hello
将/path/to/library/dir替换为上一步找到的目录(如/usr/lib64)。
方法二:设置环境变量
通过LD_LIBRARY_PATH让系统加载器识别库:
export LD_LIBRARY_PATH=/path/to/library/dir:$LD_LIBRARY_PATH java -classpath "$CLASSPATH" Hello
3. 修正Java运行命令
避免使用java Hello.java(单文件执行模式),该模式可能无法正确加载指定的类路径和本地库。直接运行编译后的类文件:
java -classpath "$CLASSPATH" Hello
额外排查点
- 检查库文件权限:确保当前用户拥有读取权限(默认安装的包通常已配置正确)。
- 版本兼容性验证:确保安装的
lttng-ust包与Photon OS 5、OpenJDK 17版本匹配(使用官方源安装可避免此问题)。
内容的提问来源于stack exchange,提问作者theseeker
相关产品推荐
相关产品推荐

