JAVA-打包成jar包
目录:
利用java工具jar打包
- jar包无入口
jar包有入口(即有main()函数),可以直接运行
- 运行jar包时候加载指定依赖其他jar支持包的目录
利用eclipse打包
- 打包 jar file
- 打包 runnable jar file
- Eclipse用Runnable JAR file方式打jar包,并用该jar包进行二次开发
- Java项目(jar包形式)指定端口启动服务
- 相关问题
#
一.利用java工具jar打包
主线:编译 - 打包 - 运行
- jar包无入口
- 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
注意:
- 冒号后面加一个空格
- Main-Class: 包含main方法的类,Main-Class后面是类的全地址,比如你的主文件是A.java,文件里打包为package com.main; 那么这里就写com.main.A,不要加.java后缀,主文件地址写错将会出现“找不到或无法加载主类”的错误;
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”的错误;最后必须回车到新的空行,否则出错,如下面内容就必须在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的同目录
这里有几个选项:
- 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文件有两种方式:
- 在命令行下运行命令java -jar 你的jar文件名称,比如我的执行如下:
如果在jar中有一些System.out.prinln语句(如上执行结果),运行后不想在控制台输出而是保存在文件中方便以后查看,可以用一下命令:
java -jar pro1.jar > log.txt (这时命令行窗口不会有任何输出)
输出信息会被打印到log.txt中,当然log.txt自动生成,并位于和pro1.jar一个目录中。
- 新建一个批处理文件,如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。
还没有评论,来说两句吧...