为什么Java应用程序无法从自己的.jar加载库二进制文件?

时间:2017-06-20 13:28:10

标签: java libraries binaries

在寻找一种方法让我的Java项目加载包含该项目的库二进制文件时,我看到有几个人说的话:

  

在你可以使用DLL之前,你需要从JAR中实际提取这些DLL并将它们转储到某个地方的硬盘上,否则你将无法加载这些

这句话是真的吗?为什么?

2 个答案:

答案 0 :(得分:4)

动态链接库(DLL)是特定于系统的,加载它们会调用JVM及其类加载器范围之外的某些操作系统操作。

因此,您无法轻松地从jar文件中加载它们。

答案 1 :(得分:1)

DLL(动态链接库)是特定于操作系统的。操作系统需要能够直接查找文件才能加载它们。 jar文件本质上是一个zip文件,操作系统不会在zip / jar文件中查找DLL。

为了让操作系统找到一个DLL,它需要可以直接在文件系统上访问,也可以在操作系统的DLL路径中访问。

请注意,jar是特定于Java的实体,Java与操作系统不同。通过依赖于特定于操作系统的DLL(或Linux中的.o文件),您将限制程序在与库兼容的操作系统上工作 - 即使位数(32位或64位)对于DLL也很重要。

话虽如此,如果您确实需要包含和使用DLL,那么在运行之前,您需要某种安装程序或说明来​​获取文件。

相关问题