包含第三方jar包以及dll文件的Java程序打包

时间:2021-10-16 18:32:26

   介绍一下我这个程序的背景:我开发的程序需要用到第三方的jar包,需要调用海康威视的dll库文件。程序开发的差不多快要结束的时候需要把程序打包成一个jar包好给客户演示用(总不能把源代码给客户吧),打包的过程是一个坎坷的过程。下面介绍一下我走过的弯路以及最后的解决方法。

   经历的过程大体分为一下4个过程:

   1.网上的过程利用myeclipse自带的工具把程序打成jar包,这个过程我就不介绍了,网上很多,而且没有成功。这个过程的问题是不能打开主界面,这个打包过程中会让选定main函数所在的类,我的程序里面main函数所在的类是登录界面类。运行打成的jar包只能打开登录界面,登录后的界面打不开(这种方法的问题是不能把第三方的jar包以及dll文件打进jar包)。

   2.继续网上查找方法。网上说了很多可以打包第三方jar包的方法。我这里使用了fat jar插件来把程序打成jar包。运行打成的jar包,效果同过程1,这种打包方法不能把需要的dll文件打进jar包。

   3.网上下载了一个打包软件installanywhere,按照教程把程序做成了安装软件。运行程序虽然能够打开主界面了,但是存在的问题是视频播放窗口界面打不开,这个界面里面会调用海康的dll文件。为什么打不开,我也没有找到答案。

   4.其它的坎坷过程,包括使用新的打包软件等,都没有成功。

   

   根据提示dll文件找不到,我查找了网上的解决方法,方法都是让添加一段代码。由于我的水平太低,我竟然不知道这段代码需要添加到哪个文件里,很尴尬是不是包含第三方jar包以及dll文件的Java程序打包

   既然找不到dll文件,最先想到的就是把打成的jar包和用到的dll文件放在同一个目录下面,可惜的是没有成功呢。这个时候我突然想到可能是相对路径的问题,于是我就按照工程代码中的路径对jar包和需要的dll文件进行部署。工程里面的文件结构如下:

包含第三方jar包以及dll文件的Java程序打包

其中工程中需要用到的dll文件在lib文件夹中。按照这个思路,我们把jar包和dll文件也进行了相同的放置。如下:

包含第三方jar包以及dll文件的Java程序打包

这里,工程中需要的dll文件也放置在lib文件夹中了。另外工程中用到的图片等相对于jar文件的路径也要和工程代码中的相对路径相同。这里的jar文件是按照过程2打包成的fat jar文件。只有怎么打包成fat jar,网上一大堆,这里就不详细介绍了。