JAVA-打包成jar包

2022-07-11 14:36:56

目录:

  1. 利用java工具jar打包
    1. jar包无入口
    2. jar包有入口(即有main()函数),可以直接运行
      1. 运行jar包时候加载指定依赖其他jar支持包的目录
  2. 利用eclipse打包
    1. 打包 jar file
    2. 打包 runnable jar file
    3. Eclipse用Runnable JAR file方式打jar包,并用该jar包进行二次开发

  3. Java项目(jar包形式)指定端口启动服务
  4. 相关问题

一.利用java工具jar打包

主线:编译 - 打包 - 运行

  1. jar包无入口
  2. jar包有入口(即有main()函数),可以直接运行

1.jar包无入口,为了供其他开发者使用,而不用运行

直接打包即可

目录:

注意需要先将源文件编译

1.执行打包命令:

结果:

2.编写测试类,引入A.jar

package test;
import test.A;

public class Test {
	public static void main(String[] args) {
		A a = new A();
		System.out.println(a.P(1, 3)); // 4
	}
}

3.解压jar包文件

可以看到打包后,多了一个MANIFEST.MF文件,这个文件很重要,在打包为入口的jar包时,需要用到,内容如下:

注意:可以看到最后两行是空行,所以我们新建MANIFEST.MF文件结尾也要有空行

4.如果直接运行A.jar,不能运行,想要可以运行可以修改A.jar中的MANIFEST.MF文件。

2.jar包有入口(即有main()函数),可以直接运行

1.新增MANIFEST.MF 文件内容 (名字任起,比如可以叫manifest,因为MANIFEST.MF 是打包后的默认名称,所以直接取MANIFEST.MF )

Manifest-Version: 1.0
Main-Class: test.A
Class-Path: lib/gson-2.8.7.jar lib/fastjson-1.2.73.jar

注意:

  1. 冒号后面加一个空格
  2. Main-Class: 包含main方法的类,Main-Class后面是类的全地址,比如你的主文件是A.java,文件里打包为package com.main; 那么这里就写com.main.A,不要加.java后缀,主文件地址写错将会出现“找不到或无法加载主类”的错误;
  3. Class-Path: 依赖的jar包的路径,如果依赖多个jar包,使用空格隔开
    路径:相对路径,jar包相对于helloworld.jar文件的路径
               绝对路径,jar包在操作系统中的路径
    常用相对路径,将依赖的jar包和自己的jar包放在同一级目录下,这样Class-Path直接写依赖jar包的名字即可。
    如上:
    我们的项目打包后为A.jar,那么按照上面的定义,应该在 A.jar的同层目录建立一个lib文件夹(即lib文件和打包的jar文件
    在同一个目录下),并将相关的jar包放在里面。否则将会出现“Exception in thread "main" java.lang.NoClassDefFoundError”的错误;
  4. 最后必须回车到新的空行,否则出错,如下面内容就必须在lib/fastjson-1.2.73.jar后面再输入一个回车

2.打包:

3.运行:

或者

如果在MANIFEST.MF 文件中没有指定Class-Path ,可以在运行的时候指定需要的依赖的jar包的路径

二.利用eclipse打包 【jar file与runnable jar file及区别】

打包jar file

项目结构目录

package utils;

public class Math {
	public static void main(String[] args) {
		System.out.println("starting... ");
	}
	
	public void P() {
		System.out.println(3.1413528);
	}
}

步骤1:准备主清单文件 “MANIFEST.MF”,程序打包时会用到。

步骤2:右键项目Export,打包 jar file

步骤3:

第3处需要注意:如果有需要依赖的第三方jar包放在lib目录下,那么打的jar包需要放在lib的同目录

这里有几个选项:

  1. * Export generated class files and resources 表示只导出生成的.class文件和其他资源文件
    * Export all output folders for checked projects 表示导出选中项目的所有文件夹
    * Export java source file and resouces 表示导出的jar包中将包含你的源代码*.java,如果你不想泄漏源代码,那么就不要选这项了
    * Export refactorings for checked projects 把一些重构的信息文件也包含进去

步骤4:选择我们在第一步中自定义的配置文件路径,这一步很重要,不能采用默认选项。(如果我们没有依赖的第三方jar包,也不是一个可运行的jar包(即没有main()函数),那么这一步可以跳过,在上一步的时候就finish)

这里解释一下配置项:

* Generate the manifest file:是系统帮我们自动生成MANIFEST.MF文件,如果你的项目没有引用其他class-path,那可以选择这一项。
* Use existing mainfest from workspace:这是可以选择我们自定义的.MF文件,格式如上所写,引用了第三方包时选用。
* Seal content:要封装整个jar或者指定的包packet。
* Main class:这里可以选择你的程序入口,将来打包出来的jar就是你这个入口类的执行结果。

最后Finish,即生成了我们要的jar文件。

运行该jar文件有两种方式:

1. 在命令行下运行命令java -jar 你的jar文件名称,比如我的执行如下:

如果在jar中有一些System.out.prinln语句(如上执行结果),运行后不想在控制台输出而是保存在文件中方便以后查看,可以用一下命令:
java -jar pro1.jar > log.txt (这时命令行窗口不会有任何输出)
输出信息会被打印到log.txt中,当然log.txt自动生成,并位于和pro1.jar一个目录中。

2. 新建一个批处理文件,如start.bat,内容为:java -jar pro1.jar,放在jar文件同一目录下即可,以后点击自动运行即可,更加方便。

打包runnable jar file

注意:library handling中

  • 第一个为提取extract需要的依赖的库或jar合成到jar 文件里;
  • 第二个则仅仅打包依赖库到jar文件;
  • 第三个则把依赖库放到一个文件夹中。

例如,项目需要引用的第三方外部jar如下

将项目分别用三种库处理方式,并导出,然后将各个jar解压便可对三种方式一目了然。

解压:

第一种方式:

第二种方式:

第三种方式:如解压图所示把依赖库放到一个文件夹中

运行即可

三.Java项目(jar包形式)指定端口启动服务

java -jar xxx.jar --server.port=80

四.相关问题

内容导航:

Q1:java项目打包成jar不能访问图片问题

一、通过使用外部资源文件的方式解决

把项目打包生成Jar后,再新建一文件夹,把项目中所有使用的图片文件和生成Jar文件放在该目录下,只要代码对图片文件的引用路径正确,如:ImageIcon image=new ImageIcon(SwingResourceManager.getImage("imagefilePath"));就可以了。

这种方式下,图片文件与类文件不是一块放在包中的,类文件在包中,而图片文件在项目根目录下。

二、通过使用内部资源文件的方式解决

把所用的图片文件放在项目使用的包中,打包时把图片文件同时打进Jar文件中。这种方式在具体代码中应使用下面其中一种:

1.ImageIcon image = new ImageIcon(this.getClass().getResource("imagefilePath"));

2.ImageIcon image = new ImageIcon(main.class.getResource("imagefilePath"));

3.ImageIcon = SwingResourceManager.getImage(main.class,"imagefilePath");

4.3.ImageIcon = SwingResourceManager.getImage(this.getClass(),"imagefilePath");

3和4中第一个参数代表图片文件路径的参照对象,不能少,否则不能正确获得图片资源。 最后,朋友们一定要注意大小写的问题,在项目中文件名的大小写没有影响,但是打包后,就必须注意文件名大小写问题了,否则也是不行的。

Q2:我在Eclipse中将一个java项目打包成jar文件后,为什么双击它时没反应?但在eclipse中是可以运行的

jar 文件要在命令行里运行,开始->运行(XP)/在搜索程序和文件对话框里->里输入cmd->在弹出的cmd框中键入:java -jar 你的JAR文件完整路径和名称.jar-> 回车,就可以运行了。

普通双击是没用的(并没关联到 java 并以-jar参数运行),甚至常常被当做一个类似rar的包打开。

Q3:如何将一个Java项目打包打成多个Jar包

eclipse和Myeclispe的导出功能 都是可以支持在同一个项目内 分包打成jar的 由于程序本身是有依赖关系的 所以分包的jar也是要相互支持才行。至于想复用可以做一些公共的功能包打成jar,反复使用也是可以做到的。

wwW.YijIt:ao.com

Q4:如何用myeclipse导出Java项目(含外部jar包)

右击项目,单击export=》java=》选第三个Runnable Jar file (可执行的jar文件),Next,

选择launch configuration(程序入口配置),Exportdestination(导出目标)

Library handing:

选择第一个 引用的jar包会整合到项目中去。

选择第二个 引用的jar包会单独放在项目根目录下。

选择第三个 引用的jar包会单独放在一个文件夹下,这个文件夹和导出的jar放在同一目录下,

finish。

Q5:如何将带包的java项目文件打包成jar

是jar.exe

要如何建立Jar文件呢?只要使用JDK提供的Java的文件包工具,就是jar.exe,这个就可以将Java程序打包成一个jar文件了。其实就是一个压缩包形式的。

这个jar和JDK中的java或者javac 的用法差不多。

呵呵,以我的为例,我的JDK的安装路径是:D:\Program Files\Java\jdk1.5.0_12\bin

所以你想详细的查看jar怎么用就可以在命令提示符中输入:

D:\>cd Program Files\Java\jdk1.5.0_12\bin\jar

这样你就可以查看jar的使用了。

希望可以帮到你!

Q6:java项目怎么打成可运行的jar包

1、jar包有入口(即有main()函数)

选中要打包的工程--->右键选择Export---->java----->Runnable java file----->next---->在launch configuration输入jar包入口,即该工程要打包的主函数文件----->Export destination输入jar包存放的位置以及文件名---->library handling选择package requreied....JAR---->finish。

2、jar包无入口

选中要打包的工程->右键选择Export---->java----->java file----->next----->Exported all output folders for checked project----->Export destination输入jar包存放的位置以及文件名---->finish。

  • 作者:yigg
  • 原文链接:https://blog.csdn.net/yiguang_820/article/details/117601689
    更新时间:2022-07-11 14:36:56