在Eclispe RCP应用程序中,有没有办法检查当前系统上是否有特定的本机库?
使用System.loadLibrary(“myLib”);然后捕获UnsatisfiedLinkError会导致其他bundle无法使用该库,因为这会导致错误“Library已经被另一个类加载器加载”。
我在互联网上找到了这个问题的解决方案,它使用自定义类加载器,然后加载库,然后使用System.gc()对类加载器进行垃圾收集,这也将卸载库以便它可以通过另一个包再次加载。
但是有一些缺点:
答案 0 :(得分:0)
ad 3.)首先,我会避免让bundle随机加载系统库。也许您可以在服务包中打包系统库及其所有访问权限?
我同意,抓住 ERROR 不仅可怕,它可能不是我们应该做的事情。错误是VM错误,这通常会导致您的vm -or应用程序重新启动,以确保稳定运行。
对我来说,检查库是否可用与检查文件资源是否存在类似。如果库在应用程序上下文中是非常动态的,您可以让用户浏览库并让应用程序知道库的位置。如果没有像用户这样的东西,你不能简单地在客户端机器的路径中搜索文件吗?