制作jar文件,解冻jar文件

本文介绍如何创建、指定main-class属性以及运行Java JAR文件,并提供了详细的命令示例和清单文件(manifest.mf)的配置方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

JAR是向Web服务器或者企业级Java安装部署类的基础

讲一个Java应用创建为JAR文件,首先进入类所在的目录,然后执行

--------------------
jar cvf test.jar
--------------------

执行完命令后,你会得到app.jar文件了。

 

指定main-calss的JAR文件制作

先制作manifest.mf文件:

----------struts.jar例子-----------------------------------------------------------------------
Manifest-Version: 1.0
Created-By: Apache Ant 1.5.1
Extension-Name: Struts Framework
Specification-Title: Struts Framework
Specification-Vendor: Apache Software Foundation
Specification-Version: 1.1
Implementation-Title: Struts Framework
Implementation-Vendor: Apache Software Foundation
Implementation-Vendor-Id: org.apache
Implementation-Version: 1.1
Class-Path:  commons-beanutils.jar ...
确保文件的最后包括一个空行,否则java不会认可这个清单项。会使倒数第二行的字符丢失。
-------------------------------------------------------------------------------------------------
更详细关于JAR文件的规范请见
http://java.sun.com/j2se/1.3/docs/guide/jar/jar.html

 

但是一般情况我们不需要这么详细:

-----------manifest.mf文件----------
Main-Class: com.test.mainclass
----------------------------------------

指定main-class就可以了。

然后执行以下命令

------------------------------------
jar cvfm test.jar ../manifest.mf test
------------------------------------

【注意】
manifest.mf文件不要放在class路径,不然这个文件也会成为JAR文件的一员。

命令中manifest.mf是一个路径,如[../manifest.mf]表示在当前路径的父目录下的文件。

然后在JAR文件所在路径下执行以下命令

---------------------
java -jar test.jar
---------------------

JAR文件就运行起来了。

 

JAR文件的解冻:

解冻比制作会简单的多。

------------------
jar xvf test.jar
------------------

解冻后的路径为当前路径(就是你cmd窗口或者shell窗口所运行的工作路径)。

比如test.jar在d:/test下,你要解压到d:/temp/aa/ 路径下。

------------------------
cd d:/temp/aa/
cd d:
jar xvf d:/test/test.jar

-----------------------

这样你就可以在d:/temp/aa/下看到test.jar的解冻文件了。

 

下面说明下JAR具体的解释

--------------------------------------------------------------------------------

jar {ctxu}[vfm0M] [jar-文件] [manifest-文件] [-C 目录] 文件名 ...

--------------------------------------------------------------------------------

其中

{ctxu}

jar 命令的子命令,每次 jar 命令只能包含 ctxu 中的一个,它们分别表示:

-c 创建新的 JAR 文件包

-t 列出 JAR 文件包的内容列表

-x 展开 JAR 文件包的指定文件或者所有文件

-u 更新已存在的 JAR 文件包 (添加文件到 JAR 文件包中)

[vfm0M]

其中的选项可以任选,也可以不选,它们是 jar 命令的选项参数

-v 生成详细报告并打印到标准输出

-f 指定 JAR 文件名,通常这个参数是必须的

-m 指定需要包含的 MANIFEST 清单文件

-0 只存储,不压缩,这样产生的 JAR 文件包会比不用该参数产生的体积大,但速度更快

-M 不产生所有项的清单(MANIFEST〕文件,此参数会忽略 -m 参数

[jar-文件]

即需要生成、查看、更新或者解开的 JAR 文件包,它是 -f 参数的附属参数

[manifest-文件]

即 MANIFEST 清单文件,它是 -m 参数的附属参数

[-C 目录]
表示转到指定目录下去执行这个 jar 命令的操作。它相当于先使用 cd 命令转该目录下

再执行不带 -C 参数的 jar 命令,它只能在创建和更新 JAR 文件包的时候可用。

文件名 ...

指定一个文件/目录列表,这些文件/目录就是要添加到 JAR 文件包中的文件/目录。

如果指定了目录,那么 jar 命令打包的时候会自动把该目录中的所有文件和子目录打入包中。

 

<think>好的,用户遇到了GitHub仓库被冻结的问题,因为仓库大小超过了1GB的限制。我需要帮他找到解决方案。首先,我得回忆一下GitHub的存储政策。根据引用[1],GitHub建议每个仓库保持在1GB以下,特别是要避免包含大文件,尤其是二进制文件。如果超过这个限制,可能会收到支持团队的邮件要求缩减仓库大小。 接下来,用户的问题是如何解决仓库被冻结的情况。我需要逐步分析可能的解决方法。首先,用户需要减小仓库的体积。常见的方法包括清除历史中的大文件,使用工具如git filter-branch或者BFG Repo-Cleaner。这些工具可以重写提交历史,彻底删除大文件,从而减少仓库的大小。 然后,可能需要处理现有的提交记录。因为即使删除了大文件,Git的历史记录中仍然保留着这些文件,导致仓库体积过大。所以,重写历史并强制推送到远程仓库是必要的步骤。但要注意,这会影响所有协作者,需要他们重新克隆仓库。 另外,用户可以考虑使用Git LFS(Large File Storage)来管理大文件,尤其是二进制文件。Git LFS将大文件存储在单独的服务器上,避免占用仓库空间。但需要注意,Git LFS有免费额度的限制,超过可能需要付费。 另外,检查当前仓库的大小和最大的文件也很重要。使用命令如git count-objects -vH或git gc --aggressive可以帮助评估仓库的大小。识别出大文件后,可以针对性地删除它们。 如果仓库已经超过1GB并被冻结,用户需要按照支持团队的指引操作,可能包括清理仓库后联系他们解冻。此外,未来应该避免向仓库中添加大文件,可以考虑使用外部存储或子模块来分离大文件。 总结步骤应该是:1. 识别并删除大文件;2. 重写提交历史;3. 使用Git LFS管理必要的大文件;4. 联系GitHub支持确认清理后的状态。同时,用户需要注意后续的最佳实践,比如定期清理,使用.gitignore文件排除不必要的文件,以及考虑替代存储方案。 最后,生成相关问题,帮助用户进一步理解如何维护仓库大小,处理历史记录,以及Git LFS的使用细节。</think>### 解决GitHub仓库因超过1GB被冻结的步骤 #### 1. **识别仓库中的大文件** - 使用命令检查仓库体积: ```bash git count-objects -vH # 查看仓库对象占用空间 git gc --aggressive # 清理无效文件并优化本地仓库 ``` - 通过工具扫描历史大文件: ```bash git rev-list --objects --all | grep "$(git verify-pack -v .git/objects/pack/*.idx | sort -k3 -n | tail -5 | awk '{print$1}')" ``` #### 2. **永久删除历史大文件** - **方法一:使用`git filter-branch`** ```bash git filter-branch --force --index-filter 'git rm --cached --ignore-unmatch 文件名' --prune-empty --tag-name-filter cat -- --all ``` - **方法二:使用BFG Repo-Cleaner(更高效)** ```bash java -jar bfg.jar --delete-files 文件名.扩展名 仓库路径 ``` #### 3. **重写提交历史并强制推送** ```bash git reflog expire --expire=now --all git gc --prune=now --aggressive git push origin --force --all # 强制推送所有分支 git push origin --force --tags # 强制推送标签 ``` #### 4. **使用Git LFS管理必要的大文件** - 安装Git LFS后标记需追踪的文件类型: ```bash git lfs install git lfs track "*.zip" "*.pdf" # 示例:追踪ZIP和PDF文件 git add .gitattributes ``` - 注意Git LFS的免费额度为1GB存储+1GB带宽,超出需付费[^1]。 #### 5. **联系GitHub支持** - 清理完成后,通过邮件或支持页面提交解冻申请,附上清理操作的日志。 --- ### 最佳实践建议 1. **仓库分离**:将文档、二进制文件等移至独立仓库,通过子模块(`git submodule`)引用。 2. **定期清理**:使用`git gc`和`git prune`维护仓库健康状态。 3. **忽略非必要文件**:在`.gitignore`中添加如`*.log`, `*.bin`等规则。 4. **替代存储方案**:对大型数据集,优先使用云存储(如AWS S3)或专用版本控制工具(如Git Annex)。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值