Mac运行.jnlp文件遇DYLD_LIBRARY_PATH为null的UnsatisfiedLinkError错误求助
嗨,我之前也碰到过类似的坑,给你几个亲测有效的排查和解决思路,你可以挨个试试:
先检查.jnlp文件的native库配置
用文本编辑器直接打开你的.jnlp文件,找找有没有<nativelib>或者<library>标签,看看里面指定的native库路径是不是指向了报错里提到的那个缓存文件夹/Users/setupuser/Library/Application Support/Oracle/Java/Deployment/cache/6.0/61/813837d-5017de3f-n/。如果路径不对,手动修正后再重新运行试试;要是找不到相关标签,也可以直接把libipe_jmediaplayerLib.dylib复制到系统默认的Java扩展目录,执行下面的命令就行:sudo cp /Users/setupuser/Library/Application Support/Oracle/Java/Deployment/cache/6.0/61/813837d-5017de3f-n/libipe_jmediaplayerLib.dylib /Library/Java/Extensions/输入密码确认权限后,再重新启动jnlp文件。
给Java Web Start进程手动注入环境变量
别双击运行jnlp了,改用终端启动,手动把DYLD_LIBRARY_PATH注入到进程里。先找到你的javaws执行路径,一般是/Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home/bin/javaws,然后在终端里执行:DYLD_LIBRARY_PATH=/Users/setupuser/Library/Application Support/Oracle/Java/Deployment/cache/6.0/61/813837d-5017de3f-n/ /Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home/bin/javaws 你的.jnlp文件完整路径这样能强制让Java进程识别到native库的位置。
检查Java安全策略限制
打开Java控制面板(终端输入/usr/bin/java -cp /Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home/lib/deploy.jar com.sun.deploy.panel.ControlPanel就能打开),转到「安全」标签:- 把.jnlp对应的来源站点添加到「例外站点」列表里,有时候安全策略会阻止加载未授权的native库;
- 也可以临时把安全级别调低到「中」,测试能不能正常运行,确认是权限问题后再调回合适级别并配置例外。
清理Java部署缓存重新下载
还是在Java控制面板的「临时Internet文件」标签里,点击「设置」然后「删除文件」,把所有缓存的jnlp和native库都清掉,然后重新运行jnlp文件,让系统完整重新下载资源——有时候缓存损坏会导致路径识别出问题。
要是这些方法都不行,你可以把.jnlp文件里的native库相关配置内容贴出来,我再帮你进一步排查~
内容来源于stack exchange

