2023-01-20 289
背景
所以我试图将jnilib(特别是 jogl ) X在运行时.我一直在遵循相关的堆栈溢出问题:
对我来说,最终目标是将特定于平台的jogl文件包装到jar中,然后将其拉开为临时目录并在启动时加载它们.我回到了我的问题,只是尝试使用硬编码路径加载Jogl:
File f = new File("/var/folders/+n/+nfb8NHsHiSpEh6AHMCyvE+++TI/-Tmp-/libjogl.jnilib");
System.load(f.toString());
f = new File ("/var/folders/+n/+nfb8NHsHiSpEh6AHMCyvE+++TI/-Tmp-/libjogl_awt.jnilib");
System.load(f.toString());
尝试使用Jogl API时会得到以下例外:
Exception in thread "main" java.lang.UnsatisfiedLinkError: no jogl in java.library.path
但是,当我通过添加以下JVM选项来指定java.library.path时:
-Djava.library.path="/var/folders/+n/+nfb8NHsHiSpEh6AHMCyvE+++TI/-Tmp-/"
一切正常.
问题
Mac OS X上的可能使用System.load(或其他一些变体)作为替代-djava.library.path在运行时调用的吗?
jogl总是试图自动加载所有依赖的库.
为了避免这种情况,应该有一个Nativelibloader类,您可以在此之前调用DisableLoading()在您通过System.load()
自己加载库之前
您不必在启动时提供java.library.path.您可以通过
进行编程设置
System.setProperty("java.library.path", "/var/folder/bla/foo/bar/");
我不知道System.load()如果没有此库路径,
是否会以某种方式工作.
System.load(…)将LibraryName作为参数.它不会走到库作为参数.
JVM在-Djava.library.path;
中指定的路径列表中搜索具有指定名称的库
这里没有任何特定的Mac OSX.它以所有操作系统上的相同方式搜索库.
以上所述是小编给大家介绍的在Mac OS X上加载JNI库?,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对77isp云服务器技术网的支持!
原文链接:https://77isp.com/post/26075.html
=========================================
https://77isp.com/ 为 “云服务器技术网” 唯一官方服务平台,请勿相信其他任何渠道。
数据库技术 2022-03-28
网站技术 2022-11-26
网站技术 2023-01-07
网站技术 2022-11-17
Windows相关 2022-02-23
网站技术 2023-01-14
Windows相关 2022-02-16
Windows相关 2022-02-16
Linux相关 2022-02-27
数据库技术 2022-02-20
抠敌 2023年10月23日
嚼餐 2023年10月23日
男忌 2023年10月22日
瓮仆 2023年10月22日
簿偌 2023年10月22日
扫码二维码
获取最新动态