IntelliJ运行打印机测试程序遇ERR_LIBRARY_NOT_LOADED加载库错误求助
问题
- 开发环境:IntelliJ IDEA 2022.1,使用JDK 11.0.13编译打印机测试程序
- 已将指定打印机库(
CuCustomWndAPIJWrap.jar)加载到项目中,编译无语法错误,IDE内部可正常访问库类 - 运行时IDE执行的命令:
"C:\Program Files\Java\jdk-11.0.13\bin\java.exe" "-javaagent:C:\Program Files\JetBrains\IntelliJ IDEA 2022.1\lib\idea_rt.jar=60723:C:\Program Files\JetBrains\IntelliJ IDEA 2022.1\bin" -Dfile.encoding=UTF-8 -classpath "C:\Users\bmbil\Desktop\CARGO\printer\wetransfer_tg2460__prtc60_100_step-zip_2022-09-09_1215\01sw0000000536_103\CuCustomWndAPI Pack 1.03\Examples\Java Library\Source code\DemoCuCustomWndAPIWrap\out\production\DemoCuCustomWndAPIWrap;C:\Users\bmbil\Desktop\CARGO\printer\wetransfer_tg2460__prtc60_100_step-zip_2022-09-09_1215\01sw0000000536_103\CuCustomWndAPI Pack 1.03\Library\Java Library\CuCustomWndAPIJWrap.jar" com.custom.democucustomwndapijwrap.main
- 运行抛出异常:
EXCEPTION: CuCustomWndAPIWrapException Error:ERR_LIBRARY_NOT_LOADED > -> Load library error
疑问:程序用Java 11编译,库的字节码版本为49.0,两者是否存在关联?已尝试修改IDE编译器支持版本、将库作为依赖加载,问题仍未解决。
解答
字节码版本兼容性分析
字节码版本49.0对应Java 5,Java 11向下兼容所有低版本字节码,所以版本匹配不是导致ERR_LIBRARY_NOT_LOADED的原因。异常原因排查
这个错误说明Java层的jar已加载,但对应的**本地库(JNI实现,比如Windows下的.dll文件)**加载失败,常见原因:
- 只添加了Java层的jar,未找到对应的本地库文件
- 本地库所在路径未被JVM识别(未加入系统
PATH,也未通过java.library.path参数指定) - 本地库与JDK的位数不匹配(比如32位库用在64位JDK环境)
- 本地库依赖的其他系统组件缺失
- 解决步骤
- 找到库对应的本地文件(比如
CuCustomWndAPI.dll,通常和jar同目录或在单独的lib文件夹),确认文件存在 - 在IntelliJ的运行配置中,添加VM参数:
-Djava.library.path=本地库所在目录的绝对路径 - 检查JDK位数(Java 11默认64位)和本地库位数是否一致,不一致则更换对应版本的库
- 若本地库依赖其他DLL,可使用Dependency Walker工具检查缺失的依赖组件并补充
内容的提问来源于stack exchange,提问作者coyuznik
相关产品推荐
相关产品推荐

