java命令行工具打包

  https://introcs.cs.princeton.edu/java/85application/jar/jar.html

自己写的manifest.mf注意:

https://blog.csdn.net/neareast/article/details/8875342

(1)后缀名必须为.mf

(2)文件内容的最后一行必须为空行(\n)

java -jar -Dfile.encoding=utf-8 xx.jar

 D:\java_oj\ReadFileFromClassPath\target 的目录

2019/09/30  20:45    <DIR>          .
2019/09/30  20:45    <DIR>          ..
2019/09/30  20:55    <DIR>          classes
2019/09/30  20:45    <DIR>          generated-sources
2019/09/30  20:45    <DIR>          maven-archiver
2019/09/30  20:45    <DIR>          maven-status
2019/09/30  20:45             3,509 ReadFileFromClassPath-0.0.1-SNAPSHOT-fat.jar
2019/09/30  20:45             3,310 ReadFileFromClassPath-0.0.1-SNAPSHOT.jar
2019/09/30  20:45    <DIR>          test-classes
               2 个文件          6,819 字节
               7 个目录 105,511,239,680 可用字节

D:\java_oj\ReadFileFromClassPath\target>cd ..

D:\java_oj\ReadFileFromClassPath>dir
 驱动器 D 中的卷是 软件
 卷的序列号是 6BDF-6A2D

 D:\java_oj\ReadFileFromClassPath 的目录

2019/09/30  20:45    <DIR>          .
2019/09/30  20:45    <DIR>          ..
2019/09/30  20:26             1,517 .classpath
2019/09/30  20:26               573 .project
2019/09/30  20:26    <DIR>          .settings
2019/09/30  20:35                37 inputFile
2019/09/30  20:45             1,453 pom.xml
2019/09/30  20:26    <DIR>          src
2019/09/30  20:45    <DIR>          target
               4 个文件          3,580 字节
               5 个目录 105,511,239,680 可用字节

D:\java_oj\ReadFileFromClassPath>cd target

D:\java_oj\ReadFileFromClassPath\target>cd classes

D:\java_oj\ReadFileFromClassPath\target\classes>dir
 驱动器 D 中的卷是 软件
 卷的序列号是 6BDF-6A2D

 D:\java_oj\ReadFileFromClassPath\target\classes 的目录

2019/09/30  20:55    <DIR>          .
2019/09/30  20:55    <DIR>          ..
2019/09/30  20:45                37 inputFile
2019/09/30  20:55                 0 manifest
2019/09/30  20:45    <DIR>          testdemo
               2 个文件             37 字节
               3 个目录 105,511,239,680 可用字节

D:\java_oj\ReadFileFromClassPath\target\classes>jar cmf manifest example.jar testdemo.Demo
testdemo.Demo: 没有这个文件或目录

D:\java_oj\ReadFileFromClassPath\target\classes>jar cmf manifest example.jar .\testdemo
D:\java_oj\ReadFileFromClassPath\target\classes>dir
 驱动器 D 中的卷是 软件
 卷的序列号是 6BDF-6A2D

 D:\java_oj\ReadFileFromClassPath\target\classes 的目录

2019/09/30  20:57    <DIR>          .
2019/09/30  20:57    <DIR>          ..
2019/09/30  20:58             1,673 example.jar
2019/09/30  20:45                37 inputFile
2019/09/30  20:55                 0 manifest
2019/09/30  20:45    <DIR>          testdemo
               3 个文件          1,710 字节
               3 个目录 105,511,235,584 可用字节

D:\java_oj\ReadFileFromClassPath\target\classes>java -jar example.jar
example.jar中没有主清单属性

D:\java_oj\ReadFileFromClassPath\target\classes>cd ..

D:\java_oj\ReadFileFromClassPath\target>jar cmf .\classes\manifest example.jar .\classes\testdemo
D:\java_oj\ReadFileFromClassPath\target>dir
 驱动器 D 中的卷是 软件
 卷的序列号是 6BDF-6A2D

 D:\java_oj\ReadFileFromClassPath\target 的目录

2019/09/30  21:07    <DIR>          .
2019/09/30  21:07    <DIR>          ..
2019/09/30  20:57    <DIR>          classes
2019/09/30  21:07             1,705 example.jar
2019/09/30  20:45    <DIR>          generated-sources
2019/09/30  20:45    <DIR>          maven-archiver
2019/09/30  20:45    <DIR>          maven-status
2019/09/30  20:45             3,509 ReadFileFromClassPath-0.0.1-SNAPSHOT-fat.jar
2019/09/30  20:45             3,310 ReadFileFromClassPath-0.0.1-SNAPSHOT.jar
2019/09/30  20:45    <DIR>          test-classes
               3 个文件          8,524 字节
               7 个目录 105,511,231,488 可用字节

D:\java_oj\ReadFileFromClassPath\target>cd classes

D:\java_oj\ReadFileFromClassPath\target\classes>jar cmf manifest.mf result.jar .\testdemo
D:\java_oj\ReadFileFromClassPath\target\classes>dir
 驱动器 D 中的卷是 软件
 卷的序列号是 6BDF-6A2D

 D:\java_oj\ReadFileFromClassPath\target\classes 的目录

2019/09/30  21:11    <DIR>          .
2019/09/30  21:11    <DIR>          ..
2019/09/30  20:45                37 inputFile
2019/09/30  21:10                50 manifest.mf
2019/09/30  21:11             1,697 result.jar
2019/09/30  20:45    <DIR>          testdemo
               3 个文件          1,784 字节
               3 个目录 105,511,231,488 可用字节

D:\java_oj\ReadFileFromClassPath\target\classes>java -jar result.jar
Exception in thread "main" java.lang.NullPointerException
        at java.io.Reader.<init>(Unknown Source)
        at java.io.InputStreamReader.<init>(Unknown Source)
        at testdemo.Demo.readFile(Demo.java:18)
        at testdemo.Demo.main(Demo.java:25)

D:\java_oj\ReadFileFromClassPath\target\classes>jat tf result.jar
‘jat‘ 不是内部或外部命令,也不是可运行的程序
或批处理文件。

D:\java_oj\ReadFileFromClassPath\target\classes>jar tf result.jar
META-INF/
META-INF/MANIFEST.MF
testdemo/
testdemo/Demo.class

D:\java_oj\ReadFileFromClassPath\target\classes>jar cmf manifest.mf result.jar .\testdemo\ .\inputFile

D:\java_oj\ReadFileFromClassPath\target\classes>dir
 驱动器 D 中的卷是 软件
 卷的序列号是 6BDF-6A2D

 D:\java_oj\ReadFileFromClassPath\target\classes 的目录

2019/09/30  21:11    <DIR>          .
2019/09/30  21:11    <DIR>          ..
2019/09/30  20:45                37 inputFile
2019/09/30  21:10                50 manifest.mf
2019/09/30  21:14             1,846 result.jar
2019/09/30  20:45    <DIR>          testdemo
               3 个文件          1,933 字节
               3 个目录 105,511,231,488 可用字节

D:\java_oj\ReadFileFromClassPath\target\classes>jar tf result.jar
META-INF/
META-INF/MANIFEST.MF
testdemo/
testdemo/Demo.class
inputFile

D:\java_oj\ReadFileFromClassPath\target\classes>java -jar result.jar
helloworld
what‘s is your name鍚嶅瓧

D:\java_oj\ReadFileFromClassPath\target\classes>java -jar -Dfile.encoding=utf-8 result.jar
helloworld
what‘s is your name名字

D:\java_oj\ReadFileFromClassPath\target\classes>

原文地址:https://www.cnblogs.com/CreatorKou/p/11614197.html

时间: 2024-10-12 08:44:04

java命令行工具打包的相关文章

命令行工具打包

前言: iOS程序包分为“.app格式的二进制文件包”和“.ipa格式的渠道包”两种.xcodebuild 是一款用来打包 Xcode projects 或者 workspaces 的命令行工具.用xcodebuild把工程打成 app格式后,再用xcrun来签名和打成ipa格式的包.本篇文章简单讲解一下自己使用的app打包命令. 正文: 一.通过xcodebuild命令和xcrun命令打包 xcodebuild命令和xcrun两个命令必需在xxx.xcodeproj或者xxx.xcworksp

Java命令行程序构建工具-airline

以前对于开发Java命令行程序,我都是很头大的,命令行程序麻烦的是解析参数,以及一些帮助信息,今天在研究接口测试时偶然发现了一个工具可以让你快速构建命令行程序 github地址 airline 导入jar包 airline jar 在maven仓库里搜索适合你构建系统的语句 代码 我找了个解析har文件的项目,来讲解开发过程 定制自己的命令行 我的命令行以doctorq作为命令,参数为company,命令的完整格式应该为doctorq company XXXXX. @Command(name="

react.js 之 create-react-app 命令行工具系统讲解

react.js 教程之 create-react-app 命令行工具系统讲解 快速开始 npm install -g create-react-app create-react-app my-app cd my-app/ npm start 通过http://localhost:3000/查看你的app 使用 npm run build 编译打包程序 npm test 文件修改后测试,这部分内容后面讲 更新到最新版本 创建react app的主要分为两个包,一个包是create-react-a

GO实现简单(命令行)工具:sftp,文檔压解,RDS备份,RDS备份下载

GO实现简单(命令行)工具:sftp,文檔压解,RDS备份,RDS备份下载 轉載請註明出處:https://www.cnblogs.com/funnyzpc/p/11721978.html 内容提要: 1.远程连接linux执行sftp文件下载 2.window下文件解压缩(tar.gz.zip) 3.window下文件解压缩及带密码解压(zip) 4.window下调用阿里雲RDS api查询备份并下载 5.GO语言命令行工具技巧 首先,写这篇博文的一个出发点是:我无法在window的cmd命

Vue命令行工具vue-cli

前面的话 Vue.js 提供一个官方命令行工具,可用于快速搭建大型单页应用.该工具提供开箱即用的构建工具配置,带来现代化的前端开发流程.只需几分钟即可创建并启动一个带热重载.保存时静态检查以及可用于生产环境的构建配置的项目 .本文将详细介绍Vue命令行工具vue-cli 概述 Vue-cli是Vue官方提供的用于初始化Vue项目的脚手架工具.使用Vue-cli有以下几大优势 1.Vue-cli是一套成熟的vue项目架构设计,会跟着Vue版本的更迭而更新 2.Vue-cli提供了一套本地的热加载的

C#的命令行工具

?在最开始学java的时候我们一般用 记事本 + 命令行,在命令行里边进行编译和运行, C#也有类似的东西(csc工具),在学习C#语言的时候可以用 文本编辑器来编写代码,然后用C#的命令行工具来编译和运行 这个命令行工具的位置在: 开始-->所有程序-->Microsoft Visual Studio 2012 -->-->Visual Studio Tools --> VS2012开发人员命令提示 执行 csc  源代码.cs 这样就会在源代码的相同目录生成可执行文件

使用命令行工具将Android应用转换成BlackBerry PlayBook应用

昨天写了篇文章关于Android应用转换的,通过BlackBerry的在线转换工具将Android应用转换成BlackBerry PlayBook应用.有网友反映说方法有点麻烦,所以今天补上新的转换方法:使用命令行工具将Android应用转换成BlackBerry PlayBook应用. 首先要强调的是命令行工具使用起来虽然比较方便,但是对使用者有一定要求.而使用在线的网页进行转换虽然步骤比较多,但是操作比较简单.所以,对于初步接触的同学来讲,建议还是使用上一篇博文的在线转换工具比较好. 如果准

Wireshark命令行工具tshark

Wireshark命令行工具tshark 1.目的 写这篇博客的目的主要是为了方便查阅,使用wireshark可以分析数据包,可以通过编辑过滤表达式来达到对数据的分析:但我的需求是,怎么样把Data部分导出来,因为后续的工作主要针对数据包的Data部分,主要是对本地存储的.pcap文件进行解析.这时候就会使用到tshark命令行工具,可以通过命令提取自己想要的数据,可以重定向到文件,也可以结合上层语言比如Java,来调用命令行,实现对数据的处理! 下面我会从 相关实例.选项介绍.部分实例运行结果

JDK的命令行工具

jps:虚拟机进程状况工具 jps(JVM Process Status Tool)可以列出正在运行的虚拟机进程,并显示虚拟机执行主类(Main Class,main()函数所在的类)名称以及这些进程的本地虚拟机唯一ID(Local Virtual Machine Identifier,LVMID).虽然功能比较单一,但它是使用频率最高的JDK命令行工具,因为其他的JDK工具大多需要输入它查询到的LVMID来确定要监控的是哪一个虚拟机进程.对于本地虚拟机进程来说,LVMID与操作系统的进程ID(