2011-12-09 101 views
0

在我的netbeans桌面应用程序中,我在项目中保存了Rxtx的.dll文件。我可以为这些.dll文件设置库路径吗?为jar文件中的dll设置库路径

这是项目层次

PROJECTNAME

  • pacakge1

    rxtx 
          rxtxSerial.dll 
          rxtxParall.dll 
    
  • 包2

  • META-INF

在此先感谢。

回答

4

当java代码加载本地库(通常通过System.load()完成)时,此调用是对OS的本机调用。 DDL的实际加载由OS完成(如果不是这样,请纠正我)。在这种情况下,操作系统将需要一个确定的路径来加载dll。如果DLL在一些jar文件中,操作系统不会识别jar文件结构(它只能被java运行库解释),因此当打包到jar中时不会发现这些文件。

只是一个例子,对于一个标准的JDK分布,所有的类文件被打包在文件rt.jar,而所有的本机代码的DLL(插座,AWT等)是在一个单独的位置(jre/bin)。所以我的建议是,创建两个文件一个jar和其他DLL。创建一个ZIP存档。现在,如果有人需要使用它,必须解压缩,将jar保存在PATH中的类路径和DLL中。

+1

是的,DLL加载是由操作系统完成的,如果DLL存储在一个jar文件中,那么它们必须在(Windows)文件系统的某处被提取,然后才能被加载。没有办法绕过它。 –