合并多个jar包

举报
福州司马懿 发表于 2021/11/19 05:15:44 2021/11/19
【摘要】 1、将所有待合并的jar包放到一个空目录中,通过jar命令解压得到所有的.class文件。 jar -xvf xxx.jar1 xxx.jar必须为具体的jar,不能为 *.jar。虽然不会报错,但是...

1、将所有待合并的jar包放到一个空目录中,通过jar命令解压得到所有的.class文件。

jar -xvf xxx.jar
  
 
  • 1

xxx.jar必须为具体的jar,不能为 *.jar。虽然不会报错,但是解压无效,会立马返回。

jar 命令

用法: jar {ctxui}[vfmOMe] [jar-file] [manifest-file] [entry-point] [-C dir] files …
选项包括:
-c 创建新的归档文件
-t 列出归档目录
-x 解压缩已归档的指定(或所有)文件
-u 更新现有的归档文件
-v 在标准输出中生存详细输出
-f 指定归档文件名
-m 包含指定清单文件中的清单信息
-e 为捆绑到可执行 jar 文件的独立应用程序指定应用程序入口点
-O 仅存储;不使用任何ZIP压缩
-M 不创建条目的清单文件
-i 为指定的 jar 文件生成索引信息
-C 更改为指定的目录并包含其中的文件

如果有任何目录文件,则对其进行递归处理。
清单文件名、归档文件名和入口点名的指定顺序与”m”、”f”和”e”标志的指定顺序相同。

解压后将得到:原本包结构的class文件、META-INF文件夹、assembly-descriptor.xml文件。
(1)META-INF/MANIFEST.MF

Manifest-Version: 1.0
  
 
  • 1

(2)assembly-descriptor.xml

<assembly>
  <id>release</id>
  <formats>
    <format>zip</format>
  </formats>
  <fileSets>
    <fileSet>
      <includes>
        <include>README*</include>
        <include>LICENSE*</include>
      </includes>
    </fileSet>
    <fileSet>
      <directory>target</directory>
      <outputDirectory></outputDirectory>
      <includes>
        <include>gson-*.jar</include>
      </includes>
    </fileSet>
  </fileSets>
</assembly>
  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21

2、删除临时目录下所有的jar文件。否则这些jar会和解压好的class一起被打包进去。

del /F *.jar
  
 
  • 1

del 命令

查看帮助 del /?
DEL [/p] [/F] [/S] [/Q] [/A[[:]attributes]] names
ERASE [/P] [/F] [/S] [/Q] [/A[[:]attributes]] names

names 指定一个或多个文件或者目录列表。通配符可用来删除多个文件。如果指定了一个目录,该目录中的所有文件都会被删除。
/P 删除每一个文件之前提示确认
/F 强制删除只读文件
/S 删除所有子目录中的指定的文件
/Q 安静模式。删除全局通配符时,不要求确认
/A 根据熟悉选择要删除的文件
属性 R只读文件,S系统文件,H隐藏文件,A存档文件,I无内容索引文件,L重分析点、-表示”否”的前缀

3、合并所有.class文件至jar,需要切换至该临时目录,不然生成的jar会包含临时目录。注意最后还有个点,表示输出到当前目录。

jar -cvfM game.jar .
  
 
  • 1

使用 jd-gui.exe 来查看就会发现这个jar整合了所有的jar源码,而不是以*.jar的方式显示出来了。

另外,如果用proguardgui.bat 进行混淆,如果引用的是第三方库,建议先将自己的jar混淆后再合并。

文章来源: blog.csdn.net,作者:福州-司马懿,版权归原作者所有,如需转载,请联系作者。

原文链接:blog.csdn.net/chy555chy/article/details/52605917

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。