eclipse导出可执行JAR包

Jar是在发布Java应用程序时用到的一种文件格式。

JAR是 Java Archive File的缩写,是 Java 的一种文档格式,可将多个文件合并为单个JAR归档文件,jar是个多用途的存档及压缩工具,它基于ZIP和ZLIB压缩格式。JAR 文件非常类似 ZIP 文件,准确的说,它就是 ZIP 文件。JAR 文件与 ZIP 文件唯一的区别就是在 JAR 文件的内容中,包含了一个 META-INF/MANIFEST.MF 文件,这个文件是在生成 JAR 文件的时候自动创建的,这里做一个实验:若在某个目录下有文件a.java和b.java,此时在该目录下运行jar
cf test.jar *.java,则会在该目录下生成test.jar文件,用winrar打开可以看到其中多出来了一个META-INF目录,且在该目录下有一个文件MANIFEST.MF。这验证了前面所说的情况。下面将说明为什么test.jar中会多出META-INF/MANIFEST.MF 文件。

jar 文件实际上是class 文件的ZIP压缩存档,也正是因为这个原因,jar文件本身并不能表达所包含应用程序的标签信息。为了要提供存档的标签信息,Manifest 因此得以出现。jar 文件指定了一个特定目录来存放标签信息:META-INF 目录,其中包含MANIFEST.MF文件,它包含了JAR文件的内容描述,并在运行时向JVM提供应用程序的信息。

利用eclipse导出可执行jar包和这个META-INF/MANIFEST.MF文件息息相关。这里分两种情况对META-INF/MANIFEST.MF 文件的作用加以说明。

第一种情况:应用程序没有引用除JDK之外的第三方jar包。这时只需要右击工程选择“Export...”菜单,然后选择导出为JAR file,指定存放目录和名称后,在“Customize the manifest file for the JAR file.”步骤里有一项非常重要的工作,那就是指定这个可运行jar的程序入口,也就是“Main class”,然后点击Finish即可。这里以本人工程为例,其目录结构如下:

其中test.java源码如下

package test;

public class test {

	public static void main(String[] args) {
		System.out.println("No other jar files.");
	}
}

生成的jar包名称为testRun.jar。在cmd窗口下运行结果如下:

用winrar打下testRun.jar,其中META-INF/MANIFEST.MF 文件内容如下:

Manifest-Version: 1.0
Main-Class: test.test

其中,Manifest-Version用来定义manifest文件的版本, Main-Class定义jar文件的入口类,该类必须是一个可执行的类,一旦定义了该属性即可通过 java -jar x.jar来运行该jar文件。

这里需要说明的是,在MANIFEST.MF文件有很多属性字段,因为上面的test工程比较简单,所以只用到了Manifest-Version和Main-Class两个字段。在下面将要介绍的情况中,则必须要用到Class-Path字段。

第二种情况:应用程序引用了除JDK意外的第三方jar包。这里新建两个工程testJar和testRun。其中testJar工程用于提供方法调用,testRun工程调用testJar工程中定义的方法。testJar工程目录如下:

testJar.java源码如下:

package testJar;

public class testJar {
	public static void display(String para){
		System.out.println("echo para " + para);
	}
}

把testJar工程导出为普通jar包,名称为testJar.jar,加入到testRun工程后,testRun目录结构如下:

目录中多了Referenced Libraries结构,其中包含了引入的第三方testJar.jar包。TestRun.java源码如下:

package testRun;
import testJar.testJar;
public class TestRun {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		testJar.display("ggggg");
	}
}

和第一种情况中的打包方式一样,把testRun工程打包成testRunJar.jar,运行该jar包,结果如下:

解决方法如下:打开testRunJar.jar包,编辑META-INF/MANIFEST.MF 文件,添加Class-Path属性,修改结果如下:

Manifest-Version: 1.0
Main-Class: testRun.TestRun
Class-Path: ./testJar.jar

其中Class-Path属性告诉类装载器使用该值路径来搜索并加载第三方类。

修改META-INF/MANIFEST.MF 文件后运行结果如下:

ps:META-INF/MANIFEST.MF 文件有很多属性字段,并且有自己的语法格式,网上有很多资源

例如:

http://blog.csdn.net/dw_java08/article/details/7786526
http://www.cnblogs.com/kentyshang/archive/2012/11/28/2793843.html
http://blog.csdn.net/zhifeiyu2008/article/details/8829637
http://blog.sina.com.cn/s/blog_9075354e0101kc37.html
http://blog.snsgou.com/post-605.html
时间: 2024-08-08 23:50:02

eclipse导出可执行JAR包的相关文章

eclipse导出可执行jar包 报main function not found错误

eclipse导出可执行jar包 报main function not found错误,解决方法是在工程的properties中找到run debug设置main方法.

eclipse导出可执行jar包步骤

按步骤图文说明 第一步:选择要导出的工程,右键[export] 第二步:双击Java文件夹下的[Runnable Jar File] 第三步:该步骤分4步走 3.1 从下拉框选择该jar的入口文件,即main方法所在的类 3.2 设置导出jar包的路径和包名 3.3 设置第三方jar包的处置方法 Extract required libraries into generated JAR:把所有的import JAR都拆开来,包含在JAR的各个目录中,导出的实际效果如下: Package requ

eclipse生成可执行jar包[转]

相信大家在开发java的时候一定会遇到要求将java工程打包成可运行的jar的需求,今天我在这篇博客中详细讲解一下生成可运行jar的两种方法,亲测完全可行. 1. 工程中不包含第三方的jar包 这种情况比较简单,选中需要生成jar的工程,右击-->Export,出现如下的窗口 选中java--- > JAR file,出现如下窗口, 此处要: 选中 Export generated class files and resources: 选中 Compress the contents of t

Eclipse如何导出可执行jar包

在编写shell脚本时用到了可执行的jar包,而jar包从Eclipse中导出时需要同时导出jar文件以及库文件夹,具体导出方式如下: (1)点击主方法所在的java,运行java application (2)选中要导出的项目名称右键export,选中Runnable JAR file后Next (3)Launch configuration选择主方法所在的java文件,而这个文件也是在第一步中执行HtmlParser.java所得到的: 然后Export destination选择要导出的路

eclipse 导出可执行jar文件

1. 选择要到处JAR文件的工程,右键选择"Export": 2.next 在"Launch configuration"下面的下拉列表中选择程序启动时运行的主类(即项目中带有main方法的类,项目入口) 在"Export destination"下面的"Browse"按钮选择JAR的存放路径,并输入JAR文件名: 如果程序依赖于其它包,就在"Library handling"处选择"Packag

Eclipse打包可执行jar包操作步骤

1.右键点击工程,选择Export…,进入页面 2.弹出对话框,选择Java->Runnable JAR file ,点击Next>,页面显示jar包的输出路径,配置为jmeter的/lib/ext下,配置lib依赖分开打包,点击Finish,配置完成 3.到指定路径 即可获取jar包 打出的包结构为: ------------------------------------------------------Tanwheey----------------------------------

eclipse怎么导出可执行jar包

在eclpse中找到你要导出的java程序 选中它 单击文件 -->export 在弹出的export对话框中找到 jar File 单击选中-->next 按图示顺序依次 选好你的java程序,勾选右栏两个选项,选择保存到文件名和位置,最后点next 出现这个图片时 点击 Browse 浏览你的java文件选择程序入口java文件 选中你的入口程序后  点next-->finish 这样我们的jar文件就导出成功啦

JAVA生成(可执行)Jar包的全面详解说明 [打包][SpringBoot][Eclipse][IDEA][Maven][Gradle][分离][可执行]

辛苦所得,转载还请注明: https://www.cnblogs.com/applerosa/p/9739007.html  得空整理了关于java 开发中,所有打包方式的 一个操作方法, 有基于IDE的,有基于构建工具的. 这里还是比较建议新手朋友尽快习惯 maven 和 gradle 等构建工具自带的打包方式. 不是说逼格高,的确是因为不依赖 IDE, 配置好 一两行命令就搞定. 离开IDE 照样出包. 大概分为这几个步骤 一.  关于Jar 包(example.jar) 的 结构/作用/使

IntelliJ IDEA导出Java 可执行Jar包

原文:IntelliJ IDEA导出Java 可执行Jar包 保证自己的Java代码是没有问题的,在IDEA里面是可以正常运行的,然后,按下面步骤: 打开File -> Project Structure -> Artifacts,如下图 IDEA导出Java 可执行Jar包" title="IntelliJ IDEA导出Java 可执行Jar包"> 点击"+",选择"Jar",选择Empty或From modules