我有一个使用 jnlp 作为启动器的应用程序。它使用 Sigar 库,这些库需要为特定于平台的代码动态加载本机库。
出于调试目的,我有两个 JNLP 文件,一个使用 file: urls 引用代码库,另一个使用 http: urls。http url 指向正确提供文件的 localhost apache。我可以通过 apache 日志观看 JNLP 在其启动过程中下载它们的过程,因此我知道这些文件正在正确地到达我的应用程序。
这是两个代码库标签
codebase="file:/Users/siberian/Documents/workspace_mnis/MNIS/localhost/"
href="file:/Users/siberian/Documents/workspace_mnis/MNIS/localhost/minis.jnlp"-->
和 codebase="http://localhost/" href="http://localhost/mnis.jnlp"
如果我双击文件:版本它工作正常。如果我通过浏览器加载它,它工作正常。
如果我双击或浏览器加载 http: 版本,则无法找到具有此错误的动态库:
JNLPClassLoader: Finding library liblibsigar-universal64-macosx.dylib.dylib
[AWT-EventQueue-0] DEBUG Sigar - no libsigar-universal64-macosx.dylib in java.library.path
org.hyperic.sigar.SigarException: no libsigar-universal64-macosx.dylib in java.library.path
现在,有趣的是它说它找不到 liblibsigar-universal64-macosx.dylib.dylib 的文件
注意前缀额外的“lib”和后缀额外的“.dylib”。
Sigar/vmware 论坛上有关于类似问题但没有解决方案的注释。
核心问题是,为什么这在文件中表现不同:上下文与 http: 上下文?
另外值得注意的是,我已经取消了所有文件的签名和辞职,我看不到任何签名错误。
这里有答案提示:Java Webstart with Tibco Native Libs
但它在一个文件中工作:上下文让我认为其他事情是错误的。
另外:JaNeLa 告诉我一切都很好