Linux下手工创建jar 包文件和执行jar 包文件

news/2024/12/25 15:20:49 标签: java, jar

Linux下手工创建jar 包文件和执行jar 包文件.

解决如下问题:
1. 如何创建jar包.
2. 如何创建可执行jar
3. 如何执行jar

------------------------------
1. 创建jar
------------------------------
需要用 jar 工具, jar包就是java 的归档包,同zip,rar 类似.

例如: 创建my.jar包,包含当前目录下所有的class 文件.
        jar -cvf my.jar *.class
      解开 my.jar
          jar -xf my.jar

------------------------------
2. 执行jar
------------------------------
执行jar包用 java 命令, 例如
    java -jar my.jar

但如果my.jar 包含的文件不符合要求,并不能运行,会给出错误.

例如:
2.1 源码文件hello.java 如下

$ cat hello.java
public class hello {
    public static void main(String args[]){
        System.out.println("ha,ha!,I say hello");
    }
}

2.2 编译
$ javac hello.java 生成hello.class

2.3  直接执行
$ java hello
ha,ha!, I say hello

------------------------------
3. 现在打包成可执行的jar包.
------------------------------
3.1: 如果简单的只是包含hello.class
$ jar -cvf my.jar hello.class
已添加清单
正在添加: hello.class(输入 = 423) (输出 = 292)(压缩了 30%)

运行出错:
$ java -jar my.jar
my.jar中没有主清单属性
原因是它找不到main 方法在哪个类种,可以想像一下这个jar 包包含的很多类.(尽管我这个例子只包含了一个类)

3.2: 正确的打包方式, 添加MANIFEST.MF 文件
并在MANIFEST.MF 文件中写下主类(Main-Class), 如下示:
$ cat MANIFEST.MF
Main-Class:  hello

重新打包并包含MANIFELT.MF
$ jar -cvmf MANIFEST.MF my.jar hello.class
已添加清单
正在添加: hello.class(输入 = 423) (输出 = 292)(压缩了 30%)
注意命令的书写顺序!!

4. 运行,通过!
$ java -jar my.jar
ha,ha!, I say hello


http://www.niftyadmin.cn/n/31641.html

相关文章

C++基础知识点整理笔记(五)

14. 类中 private,protect,public 三种访问限制类型的区别 (一) private 是私有类型,只有本类中的成员函数访问;(二) protect 是保护型的,本类和继承类可以访问;(三) public 是公有类型,任何类都可以访问. 15. struct…

【C++入门】缺省参数

目  录1 缺省参数1.1 缺省参数概念1.2 缺省参数分类1.3 缺省参数使用注意1 缺省参数 1.1 缺省参数概念 缺省参数是声明或定义函数时为函数的参数指定一个缺省值。 在调用该函数时,如果没有指定实参,则采用该形参的缺省值,否则使用指定的实…

复试算法练习Day15——输入n个整数,输出其中最小的k个

复试算法练习Day15——输入n个整数,输出其中最小的k个 文章目录复试算法练习Day15——输入n个整数,输出其中最小的k个描述输入描述:输出描述:示例1思路具体实现时间复杂度小结描述 输入n个整数,找出其中最小的k个整数…

STM32单片机智能蓝牙APP加油站火灾预警安防防控报警监控系统MQ2DHT11

实践制作DIY- GC0122-智能蓝牙APP加油站火灾预警 一、功能说明: 基于STM32单片机设计-智能蓝牙APP加油站火灾预警 功能介绍: 基于STM32F103C系列最小系统,MQ-2烟雾传感器,火焰传感器(不能直视阳光会受到阳光干扰&…

Linux·C/C++终止线程的方法

最近开发一些东西,线程数非常之多,当用户输入CtrlC的情形下,默认的信号处理会把程序退出,这时有可能会有很多线程的资源没有得到很好的释放,造成了内存泄露等等诸如此类的问题,本文就是围绕着这么一个使用场…

Active Directory计算机备份和恢复

在Active Directory(AD)环境中,用户通过域中的计算机认证他们自身。从AD中删除这些计算机账户时,系统也会自动从域中删除它们。于是,用户不能再通过些计算机登录网络。为允许用户访问域资源,必须恢复这些已…

easy-excel通用异步导入导出神辅助

async-excel是easy-excel的辅助组件,抽取通用异步逻辑,通过引入一个starter配置个数据源就可以让导入导出变成异步,无需额外的任何代码,不改变easy-excel的任何特性。 为了支持业务上日益变态的需求,对async-excel进行…

个人简历(前端)

简历导航个人基本信息为了节约你的时间,请先看这一段我能为公司提供一个什么样的程序员我会的和我不会的个人经历和个人想法工作履历关于我在上一家公司“创业”个人基本信息 标题信息姓名保密性别男学历本科(浙工商计算机专业)工作经验6年技…