jar 命令实践

这篇具有很好参考价值的文章主要介绍了jar 命令实践。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

jar -h

非法选项: h
用法: jar {ctxui}[vfmn0PMe] [jar-file] [manifest-file] [entry-point] [-C dir] files ...
选项:
    -c  创建新档案
    -t  列出档案目录
    -x  从档案中提取指定的 (或所有) 文件
    -u  更新现有档案
    -v  在标准输出中生成详细输出
    -f  指定档案文件名
    -m  包含指定清单文件中的清单信息
    -n  创建新档案后执行 Pack200 规范化
    -e  为捆绑到可执行 jar 文件的独立应用程序
        指定应用程序入口点
    -0  仅存储; 不使用任何 ZIP 压缩
    -P  保留文件名中的前导 '/' (绝对路径) 和 ".." (父目录) 组件
    -M  不创建条目的清单文件
    -i  为指定的 jar 文件生成索引信息
    -C  更改为指定的目录并包含以下文件
如果任何文件为目录, 则对其进行递归处理。
清单文件名, 档案文件名和入口点名称的指定顺序
与 'm', 'f' 和 'e' 标记的指定顺序相同。

示例 1: 将两个类文件归档到一个名为 classes.jar 的档案中:
       jar cvf classes.jar Foo.class Bar.class
示例 2: 使用现有的清单文件 'mymanifest' 并
           将 foo/ 目录中的所有文件归档到 'classes.jar' 中:
       jar cvfm classes.jar mymanifest -C foo/ .

一、指令注意点

1、jar后面的{ctxui}[vfmn0PMe]在书写时不要加短横线-,只有-C可以用短横线-,否则会报错;

2、jar后面的{ctxui}[vfmn0PMe]不可以分开写,否则会报错;

3、{ctxui}这四个参数必须选其一,[vfmn0PMe]是可选参数,文件名也是必须的;

4、m 后面必须接指定的清单文件, M表示不创建清单文件;

5、清单文件名, 档案文件名和入口点名称的顺序,必须和'm', 'f' 和 'e' 标记的指定顺序相同;

6、-C 后接目录,表示只对目录下的文件进行打包, -C 目录/ . 其中点.表示目录下任何文件,如果想打包目录下的指定某些文件,则需要一一列出文件的全路径名称;

7、不使用-C时,jar指令后需要列出需要打包的文件;

8、files ... 代表一个文件或多个文件;

9、e 指定可运行jar包的入口点,该入口点必须是全路径名,比如com.crland.Welcome;

二、实践

1、工程目录

package com.crland;

public class Welcome {
    public static void main(String[] args) {
        Teacher.greeting();
    }
}
package com.crland;

public class Teacher {

    public static void greeting() {
        System.out.println("welcome xiaoliu");
    }
}

       jar 命令实践,java,jar,pycharm,python 

2、编辑源文件

         编译源文件需要使用javac命令,首先进入到工程目录,然后使用javac命令:

E:\codes\idea\HelloCode\testjar> javac -d out -sourcepath src .\src\main\java\com\crland\Teacher.java .\src\main\java\com\crland\Welcome.java

        命令执行完后,会在out目录下生成class类文件

jar 命令实践,java,jar,pycharm,python

        可以看到,生成的class文件也是按照原有的包目录的组织的。 

        先简单看下javac命令的用法:

用法: javac <options> <source files>
其中, 可能的选项包括:
  -g                         生成所有调试信息
  -g:none                    不生成任何调试信息
  -g:{lines,vars,source}     只生成某些调试信息
  -nowarn                    不生成任何警告
  -verbose                   输出有关编译器正在执行的操作的消息
  -deprecation               输出使用已过时的 API 的源位置
  -classpath <路径>            指定查找用户类文件和注释处理程序的位置
  -cp <路径>                   指定查找用户类文件和注释处理程序的位置
  -sourcepath <路径>           指定查找输入源文件的位置
  -bootclasspath <路径>        覆盖引导类文件的位置
  -extdirs <目录>              覆盖所安装扩展的位置
  -endorseddirs <目录>         覆盖签名的标准路径的位置
  -proc:{none,only}          控制是否执行注释处理和/或编译。
  -processor <class1>[,<class2>,<class3>...] 要运行的注释处理程序的名称; 绕过默认的搜索进程
  -processorpath <路径>        指定查找注释处理程序的位置
  -parameters                生成元数据以用于方法参数的反射
  -d <目录>                    指定放置生成的类文件的位置
  -s <目录>                    指定放置生成的源文件的位置
  -h <目录>                    指定放置生成的本机标头文件的位置
  -implicit:{none,class}     指定是否为隐式引用文件生成类文件
  -encoding <编码>             指定源文件使用的字符编码
  -source <发行版>              提供与指定发行版的源兼容性
  -target <发行版>              生成特定 VM 版本的类文件
  -profile <配置文件>            请确保使用的 API 在指定的配置文件中可用
  -version                   版本信息
  -help                      输出标准选项的提要
  -A关键字[=值]                  传递给注释处理程序的选项
  -X                         输出非标准选项的提要
  -J<标记>                     直接将 <标记> 传递给运行时系统
  -Werror                    出现警告时终止编译
  @<文件名>                     从文件读取选项和文件名

3、打包字节码文件

1、打包所有字节码文件并提供入口点,打包成可执行的jar包
E:\codes\idea\HelloCode\testjar> jar vcfe test1.jar com.crland.Welcome -C out/ . 
已添加清单
正在添加: com/(输入 = 0) (输出 = 0)(存储了 0%)
正在添加: com/crland/(输入 = 0) (输出 = 0)(存储了 0%)
正在添加: com/crland/Teacher.class(输入 = 413) (输出 = 293)(压缩了 29%)
正在添加: com/crland/Welcome.class(输入 = 322) (输出 = 237)(压缩了 26%)

        打包结果如下:

jar 命令实践,java,jar,pycharm,python

         把test1.jar复制到其他目录,然后使用java命令运行jar包,可执行:

C:\Users\liuqinhou\Desktop\test> java -jar .\test1.jar
welcome xiaoliu

        可以看到,jar包执行成功了。

注意点:

1、fe参数的顺序需要和test1.jar com.crland.Welcome的顺序保持一致才行。

2、最后的点.表示要打包out目录下所有文件

2、如果只想打包目录下指定文件,则需要在命令最后指定文件路径
 E:\codes\idea\HelloCode\testjar> jar vcfe test2.jar com.crland.Welcome -C out/ com/crland/Welcome.class

        上面指令就是只打包out/目录下的com/crland/Welcom.class文件,打包结果为:

jar 命令实践,java,jar,pycharm,python

 文章来源地址https://www.toymoban.com/news/detail-602684.html

到了这里,关于jar 命令实践的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • jar命令打包java应用和java打jar包的几种方式详解

    jar是标准的java打包命令,位于JAVA_HOME/bin/目录下面。主要功能是将多个文件打包成一个单独的jar文件。 创建jar文件 jar c[v0Mmfe] [manifest] [jarfile] [entrypoint] [-C dir] inputfiles [-Joption] 更新jar文件 jar u[v0Mmfe] [manifest] [jarfile] [entrypoint] [-C dir] inputfiles [-Joption] 解压jar文件 jar x[vf] [jarfile

    2024年02月17日
    浏览(43)
  • java -jar 命令启动后中文乱码

    我们在Windows下运行jar包时,常常会出现乱码,主要分为dos窗口输出的日志中出现乱码和程序返回数据出现乱码。 解决 一、dos窗口输出的日志中出现乱码 执行如下命令,将控制台输出编码改为UTF8: chcp 65001 二、程序返回数据出现乱码 执行如下命令,运行jar包时指定编码为

    2024年02月13日
    浏览(52)
  • java命令打jar包详细步骤

    对于如何将一个java文件通过命令形式进行打包,通过以下示例进行讲解 示例: 1.首先写一个Java文件,如下: 文件所在目录如下图所示:  2. 指定目录:建一个目录,存放.class文件和.jar文件,本文指定目录为myjar,如下图所示:  3.将java源文件编译到指定目录myjar下,在命令

    2024年02月04日
    浏览(31)
  • Java常见启动命令 -jar、-server、-cp比较

    当前java程序启动主要以 -jar 、 -server 、 -cp 等几个命令启动 jar 程序,其中我们最常用的 java -jar 启动方式,通常我们需要将当前工程所依赖的所有包编译到一个jar包中,随着工程不断迭代,外部依赖越来越多,会导致整个jar包体积变得很大,每次更新部署传输效率就会变得很

    2024年02月09日
    浏览(41)
  • java -jar 启动服务后,关闭命令窗口后服务停止

    问题:当我们用java -jar命令启动服务后,只有一直保持Xshell的窗口开启且正常连接服务器时才能访问服务,当关闭命令窗口时,服务会停止运行 解决:使用nohup命令启动服务 nohup(no hang up):不挂起 只要通过nohup命令启动服务,服务会一直运行 1.安装nohup,查询nohup是否安装

    2024年02月12日
    浏览(48)
  • 解决IntelliJ IDEA执行maven打包,执行java -jar命令提示jar中没有主清单属性

    IDEA执行 mvn clean package -DskipTest=true 命令或者借助工具的 Maven菜单 进行打包操作,然后执行 java -jar app.jar 命令后,提示jar中没有主清单属性 这个错误通常是由于生成的JAR文件缺少一个主清单属性引起的。在使用 java -jar 命令运行JAR文件时,JVM需要查找JAR文件中包含 Main-Class 属

    2024年02月05日
    浏览(64)
  • 【Java可执行命令】(五)打包部署工具 jar:深入解析应用程序打包、分发和部署工具jar ~

    Java的可执行命令程序 jar (Java Archive)最早作为一项功能在JDK 1.0中引入。它的 设计目的是为了方便在Java平台上进行打包、分发和部署应用程序 。 jar 文件可以将多个Java类、资源文件和其他依赖项打包成一个单独的归档文件,以实现更简单的应用程序管理和传输。 jar 文件是

    2024年02月11日
    浏览(70)
  • Python:pycharm中 虚拟环境 venv简介及实践

    不进行虚拟化会产生的问题 在平时使用 python 时,有可能会遇到这几个常见的问题: A.当运行的项目处于不同版本时(如 python 2.7/3.7 ),要通过切换 python 解释器的版本来运行程序(或要使用 python2/3 pip/pip3 等指令来对应不同的版本)。 B.有时做一个项目要用到许多第三方模

    2024年02月11日
    浏览(40)
  • Linux 下通过 java 命令启动 jar 包的几种常见方式

    Linux 下通过 java 命令启动 jar 包的几种常见方式 一、后台启动jar包命令 方法一:直接启动 jar 包服务 方法二:后台启动 jar 包服务 方法三:后台不挂断启动 方式四:指定日志输出的启动 方式五:指定配置文件启动 方式六:指定配置文件,使用系统默认的log配置,不另行指定

    2024年02月13日
    浏览(43)
  • 运行java命令出现 Error: Invalid or corrupt jarfile XXX.jar

    朋友 我当你一秒朋友 朋友 我当你一世朋友 奇怪 过去再不堪回首 怀缅 时时其实还有 运行java命令出现 Error: Invalid or corrupt jarfile XXX.jar 基本可以断定,是jar不完整导致的。不完整!!!记住 检查1: 检查是不是传输中断了,有些传输命令会超时,一超时就断了。 检查

    2024年02月06日
    浏览(45)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包