idea中将单个java类导出为jar包文件的方法
作者:等你归去来 发布时间:2022-08-18 11:15:55
前言
idea作为一个java开发的便利IDE工具,个人是比较喜欢的,今天来探索个小功能: 导出单个类文件为jar包!
JAR文件的全称是Java Archive File,意思就是Java档案文件。通常JAR文件是一种压缩文件,与常见的ZIP压缩文件兼容,同城也被称为JAR包。JAR文件与zip文件的去区别就是在JAR文件中默认包含了一个名为META-INF/MANIFEST.MF的清单文件,这个清单文件是在生成JAR文件时系统自动创建的。
当开发了一个应用程序后,这个应用程序包含了很多类,如果需要把这个应用程序提供给别人使用,通常会将这些类文件打包成一个JAR文件,把这个JAR文件提供给别人使用。只要别人在系统的CLASSPATH环境变量中添加这个JAR文件,则Java虚拟机就可以自动在内存中解压这个JAR包,把这个JAR文件当成一个路径,在这个路径中查找所于晓的类或宝层次对应的路径结构。
使用JAR文件有以下好处:
安全。能够对JAR文件进行数字签名,只让能够识别数字签名的用户使用里面的东西。
加快下载速度。在网上使用applet时,如果存在多个文件而不打包,为了能够把每个文件都下载到客户端,需要为每个文件单独建立一个HTTP连接,这是非常耗时的工作。将这些文件压缩成一个JAR包,只要建立一个http连接就能够一次下载所有的文件。
压缩。使文件变小,JAR的压缩机制和zip完全相同
包封装。能够让JAR包里面的文件依赖于统一版本的类文件。
可一致性。JAR包作为内嵌在Java平台内部处理的标准,能够在各种平台上直接使用。
之所以有这种需求,就是某个类文件独立存在,但是需要将其导出为jar,供别人临时使用,或者一些必要的场合,如: 编写一些特殊的agent使用。
不想为某个单个文件写一个项目,就想把代码加载在某个项目的角落里,怎样将该单个类文件导出为jar包呢?
方法如下:
1. 写好功能工具类,如:
public class Hello {
public static void main(String[] args) throws Exception {
Hello hello = new Hello();
hello.sayHello("word. bingo!");
}
public void sayHello(String word) {
System.out.println("hello, " + word);
}
}
2. 点击idea中的 File -> Project Structure... -> Artifacts -> 添加+ -> JAR -> Empty
填写好jar name, 添加好对应的资源文件。先创建好与包名对应的文件目录结构(目录结构不一致可能导致后续使用jar文件时报class not found exception),图解如下:
最后,加载编写出的单个类文件(编译后的 .class 文件,一般在 target 目录下),如下图打开添加file, 找到文件。
加载后,文件如下,设置好jar文件的输出目录,点击ok关闭对话框:
3. 编写清单文件 MANIFEST.MF,如有必要,再将打开 Project Structure...
点击 Create new ManiFest, 选择位置,然后创建一个默认的 MANIFEST.MF。 然后关闭对话框,进入自行编辑。
一些基础参数可以直接在上面填写:
MANIFEST.MF格式如下:
Manifest-Version: 1.0
Premain-Class: com.youge.api.Hello
4. 导出jar文件,先运行 build(将java文件编译到class中,从而例jar文件可更新), 再导出:
导出,点击build后完成导出:
如此,到之前设置的目录下,就可以找到导出的jar文件了。
测试运行jar文件:
java -jar hello.jar
这里只是个简单的生成jar的方式,个人觉得还是挺实用的!
来源:http://www.cnblogs.com/yougewe/p/9651156.html


猜你喜欢
- 理解并使用设计模式,能够培养我们良好的面向对象编程习惯,同时在实际应用中,可以如鱼得水,享受游刃有余的乐趣。Proxy是比较有用途的一种模式
- java 配置MyEclipse Maven环境虽然我的大部分项目已经迁到Idea上去了,但是在写部分小的测试程序的时候还是习惯
- 一、前言学习概述:学习四种不同类型的方法应用、方法被调用时的内存图、重载学习目标:熟练掌握方法的应用以及重载二、定义与调用1.概述定义:方法
- 前言 SpringCloud 是微服务中的翘楚,最佳的落地方案。 在微服务架构中多层服务之间会相互调用,如果其中有一
- 本文实例为大家分享了java实现省市区转换成树形结构的具体代码,供大家参考,具体内容如下前言:为什我想写这篇博客呢?第一方面是记录,另一方面
- 目录背景问题解决思路其他问题小结背景关于个人,前段时间由于业务太忙,所以一直没有来得及思考并且沉淀点东西;同时组内一个个都在业务上能有自己的
- C#动态创建lambda表达式近日在使用了一下EF框架,在做多条件where查询的时候不知道怎么做,网上找了找,一开始用context.Da
- java使用stream实现list中对象属性的合并:根据两个List中的某个相同字段合并成一条List,包含两个List中的字段一、前言为
- 一、@RequestMapping@RequestMapping注解的源码:@Target({ElementType.TYPE, Eleme
- 相信大家都见到了微信图标颜色渐变的过程,是不是感觉很牛逼?不得不说微信团队确实是很厉害的团队,不管是从设计还是开发人员。今天我带大家来看看,
- Handler、Message、Loopler、MessageQueen首先看一下我们平常使用Handler的一个最常见用法。Handler
- 首先让我们创建一个普通的Maven工程,添加相应的依赖<dependencies><dependency> &nbs
- 新版本的xlsx是使用新的存储格式,貌似是处理过的XML。对于OpenXML我网上搜了一下,很多人没有介绍。所以我就这里推荐下,相信会成为信
- HTML是WEB的核心,互联网中你看到的所有页面都是HTML,不管它们是由JavaScript,JSP,PHP,ASP或者是别的什么WEB技
- Mybatis采用责任链模式,通过 * 组织多个 * (插件),通过这些 * 可以改变Mybatis的默认行为(诸如SQL重写之类的),由
- 简介Spring Security,这是一种基于 Spring AOP 和 Servlet 过滤器的安全框架。它提供全面的安全性解决方案,同
- 构造函数、析构函数构造函数:1.若没提供任何构造函数,则系统会自动提供一个默认的构造函数,初始化所有成员为默认值(引用类型为空引用null,
- 最近我在考虑如何远程控制tomcat的启动和关机,最后是有友好的界面,能够实现一键式操作的,这样会肯定是会很方便的,网上找了半天,没找到,有
- 序言springboot框架价值,可以简单快速的构建独立的spring生产级别应用。springboot主要有以下的特性:1.创建独立的Sp
- OkHttp流程图OkHttp基本使用gradle依赖implementation 'com.squareup.okhttp3:ok