我用JNA调用C实现PDF电子签章,我把所有的DLL文件放到JDK的bin目录下可以正常运行,但改成绝对路径,就报无效内在访问,把该路径设到系统环境变量也是报错,放在system32下也是一样的错误:
Exception in thread "main" java.lang.Error: Invalid memory access
写据对路径试试。我这边调用dll的时候,有时候放.java的同级目录,然后直接写动态库名称就会报错,但是是说找不到dll。如果写绝对路径,例如E:\MyDll.dll就没问题。现在我是这样写的,也没问题<divclass="ref">
JNA的路径是基于java.library.path或者系统变量LD_LIBRARY寻找dll或是so库文件,调用之前,你可以看一下文件是否在变量值的路径内。
<preclass="brush:scala;toolbar:true;auto-links:false;">println(f"#${System.getProperty("java.library.path")}#")正常只要dll或者so文件在目录下就可以正确运行。
另外,注意linux下的so文件命名有一个前缀lib而dll文件是没有的这个区别。
JNA的路径是基于java.library.path或者系统变量LD_LIBRARY寻找dll或是so库文件,调用之前,你可以看一下文件是否在变量值的路径内。
<preclass="brush:scala;toolbar:true;auto-links:false;">println(f"#${System.getProperty("java.library.path")}#")正常只要dll或者so文件在目录下就可以正确运行。
另外,注意linux下的so文件命名有一个前缀lib而dll文件是没有的这个区别。
JNA的路径是基于java.library.path或者系统变量LD_LIBRARY寻找dll或是so库文件,调用之前,你可以看一下文件是否在变量值的路径内。
<preclass="brush:scala;toolbar:true;auto-links:false;">println(f"#${System.getProperty("java.library.path")}#")正常只要dll或者so文件在目录下就可以正确运行。
另外,注意linux下的so文件命名有一个前缀lib而dll文件是没有的这个区别。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。