超详细,手把手教你如何用eclipse为一个含有图片及第三方jar包的java工程项目打包

超详细,手把手教你如何用eclipse为一个含有图片及第三方jar包的java工程项目打包

前引:网上关于这样的打包教程有很多,我也是通过查阅了很多大神的教程才摸索出打包的方法,但这些教程中都有一个共同的问题,都是老手写的,都是以一个老手的角度为一个新手才会遇到的问题写教程,这导致他们的教程描述的都是大致的流程框架(以新手的角度去看的话),而缺少了很多对细枝末节上的介绍,而恰恰是这些没介绍的细节是掐死一个新手的关键,我也是刚刚才成功地为我的项目打包,情绪非常亢奋,临时起兴决定写一篇文章,并以一个新手的角度尽可能的将所有细节配上图片去介绍这个教程

**

首先

我先做了一个关于此次教程的简单的小程序,并先简单的介绍这个小程序结构和功能,以方便读者在阅读之后的教程中有参考和代入感

在这里插入图片描述
在这里插入图片描述在这里插入图片描述

程序功能: 输入ID号,点击查询,显示数据库中有没有这个人

注意: 可以看到界面中含有一张萨斯gay的图片,其次程序也连接了MYSQL,外加我还用了C3P0的连接池,意味着将用到三个第三方的Jar包,分别是:

             ①.  mysql-connector-java-8.0.19.jar      (用于连接MYSQL)
             ②.  c3p0-0.9.5.2.jar                     (用于构造连接池)
             ③.  mchange-commons-java-0.2.11.jar      (用于支持第二个jar包)

因此,我们的打包过程将有两个任务要解决:

           ①.打包带走萨斯gay
           ②.打包带走这三个jar包

一. 打包图片问题

    打包图片问题关键在于图片存放的位置和提取路径的代码

1.图片存放的位置

   右击scr文件选择new中的package,在scr文件下 新建一个名为images的包,并将图片存放在这个包中 

在这里插入图片描述
在这里插入图片描述

2.提取图片路径相关的代码

下面的代码简略的介绍如何使用存放在images包中的图片

	JLabel  label;                           
	ImageIcon  Sasuke;
	
	URL imgUR = MainWin.class.getResource("/images/SASUKE.png"); //URL在java.net.URL包中,这个包用于一些网络编程
	Sasuke = new ImageIcon(imgURL);                             //MainWin.class表示MainWin类生成的class文件
	                                                         //getResource()方法用于提取MainWin.class所在的根目录
    label = new JLabel(Sasuke);     
                 // 注意"/images/SASUKE.png"中images前有/,因为这不是一个相对路径,我的理解是他在拼接出一个绝对路径

通过这样的方法保存图片后,可以为之后打包项目的过程中减少很多不必要的操作,因为scr文件下的所有文件是默认处在打包行列中,意味着你已不需要再去考虑打包这张萨斯gay,他一定会被打包

演示如何打包图片

右击项目文件夹Task1,点击Export选项
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

二.打包第三方Jar包问题

打包第三方jar包大概分两种方式,我亲切地称这两种方式分别为外接和内含

外接: 外接方式并没有将第三方的jar包与我们的项目打包在一起,这种方式只是通过修改配置文件中的几行代码以告知程序要使用的jar包在哪个文件夹下并去使用他

内含: 内含方式将第三方的jar包与项目打包在一起成一个jar包

我更倾向于采用内含方式,不是因为他的名字,因为后者打包操作简单,而且最终只生成一个jar包即可,这之后如果还要将这个jar包做成exe文件,甚至是安装软件,都会避免掉很多的操作和错误,但在这里我都依次介绍,君且博观约取,方以厚积薄发

(当然,“外接”与“内含”的概念只是我的推测,甚至可能都没有这样的概念)

外接方式

1.自定义配置文件

右击项目文件夹Tesk1,选择new的File,命名为manifest.mf(这里请照抄)
在这里插入图片描述
在这里插入图片描述
双击打开manifest.mf文件,并为其添入代码,如下:

Manifest-Version: 1.0
Main-Class: tesk.porject
Class-Path: Library/c3p0-0.9.5.2.jar Library/mchange-commons-java-0.2.11.jar Library/mysql-connector-java-8.0.19.jar

这里有很多注意点

  ①. 第一行Manifest-Version: 1.0请照抄,指mf文件版本号
  
  ②. 每个:后都有且只有一个空格,如Main-Class: tesk.porject
  
  ③. Library/c3p0-0.9.5.2.jar与Library/mchange-commons-java-0.2.11.jar与Library/mysql-connector-java-8.0.19.jar间有且仅有一个空格
  
  ④. 请注意上述代码共有四行,不是三行,最后一行是空行,即不要让光标停在第三行尾部,而是停在第四行开头
  
  ⑤. Main-Class: tesk.porject 解释:Main-Class 指定程序的入口(请照抄),porject是我这个项目里含有主方法的
     java文件,tesk是porject.java所在包的名字,不是项目文件名字,我这里命名时有点相似
     
  ⑥. Class-Path: Library/c3p0-0.9.5.2.jar 解释:Class-Path 指定jar包的依赖关系(请照抄),Library是随便命名的,先不要
     管也没事,将在之后用到,c3p0-0.9.5.2.jar 是架包的名字(要一模一样)

2. 配置MF文件后,开始打包

右击项目文件夹Task1,点击Export选项

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3. 在生成的jar包的同目录下新建一个名为Library的文件夹,并存入那三个jar包,方可成功运行

在这里插入图片描述 在这里插入图片描述

还要另建一个文件夹放jar包,这就是我称这种打包方式为外接的原因,甚至我觉得这都不能算是打包,点外卖就是点外卖,你不能说点的外卖里撒了点自己的胡椒粉就说是自己炒的,所以接下来介绍我极喜爱的内含方式。

内含方式

内含方式不需要再自定义配置文件,右击项目文件Tesk1,点击Export
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

这样桌面就会生成一个名为text11.jar的文件,且可以直接双击运行
在这里插入图片描述

在这里插入图片描述

有必要提的是当选择Runnable JAR file这个选项为我们项目打包时就意味着你已不用在为打包的第三方jar包的位置而分忧了,他会主动的从Referenced Library文件(或默认的lib文件)下找寻jar包并为你打包

在这里插入图片描述

附文:

这里分享一种检验打包是否成功的的方法,生成的jar包虽然是独立且单一的,但可以用360压缩(或任何压缩软件)解压她,然后去看看她封闭的内心里是否有我打包的文件
在这里插入图片描述

结尾

为项目打包成jar文件只是一个开始,因为jar文件只能在安装了jdk的环境下运行,若想跨平台可以通过exe4j将jar文件集成为exe可执行文件,更有甚者还可以在此基础上通过Inno Setup制作安装软件,但这些都是后话了。

  • 7
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值