Java:System.load 和 System.loadlibrary 在 Windows XP 中抛出 Unsatisfied link 错误,但在 Windows 7 中则不会
我正在寻找针对以下 JNI 问题的解决方案/建议:
我正在尝试加载一个库文件(*.lib),该文件是从我的代码中动态创建的,并放置在文件系统的临时文件夹中。但是,当我尝试使用 Java API 中的 System.load
或 System.loadlibrary
加载相同内容时,我收到了 Unsatisfied link 错误。
这里重要的是,我正在使用命令行运行我的应用程序java -jar
我验证:
- 之前库文件是否物理存在
- 在加载类路径 ?路径变量设置正确
- 在我的桌面上,我没有看到任何安装 Windows 7 的问题
- 。我在使用 Windows XP 但相同 java 版本的测试服务器中看到这个问题。
请提出解决方案。提前致谢。
I am looking out for a solution/suggestions for the below problem with JNI:
I am trying to load a library file (*.lib) which is created on the fly from my code and placed in the temp folder of the file system. But when i try to load the same, with either System.load
or System.loadlibrary
in Java API, I am getting Unsatisfied link error.
Important thing here would be, I am running my application from command line usingjava -jar <executable-jar-file>
I verified:
- if the library file physically exists before loading
- classpath & path variables are set properly
- In my desktop I dont see any problems which has Windows 7.
- I see this issue in test server with Windows XP but same java version.
Please suggest solutions. Thanks in advance.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
loadLibrary
在系统路径/库路径中查找。我认为 TEMP 不包含在其中。最好的方法是根据TEMP
环境变量的值构建完整路径,并将该路径提供给loadLibrary
:loadLibrary
looks in the system path/library path. I don't thinkTEMP
is included in this. Best way to do this is to build a full path based on the value of theTEMP
environment variable and supply that path toloadLibrary
:问题已解决。
实际上,问题在于测试服务器没有所需的操作系统库包。
我从以下网址下载了相同的内容:
http://www.microsoft.com/downloads/en/details.aspx?familyid=766A6AF7-EC73-40FF-B072-9112BAB119C2&displaylang=en
现在一切准备就绪....
谢谢
巴鲁
Issue is resolved.
Actually the problem is with the test server which does not have the required OS library bundles.
I downloaded the same from the below url :
http://www.microsoft.com/downloads/en/details.aspx?familyid=766A6AF7-EC73-40FF-B072-9112BAB119C2&displaylang=en
and now its all set to go ....
thanks
balu