java手动打包

以前都是用Maven打包,mvn clean,mvn -Dmaven.test.skip=true package,两个就可以搞定

最近要打包,但又没有现成的打包工具,只好手动打包了,在网上看了一篇文章如下

http://qingfeng825.iteye.com/blog/432250

但发现这种如果移植到其他机器就不行,自己改了点东西,记录如此

首先看上面的链接,

然后自己用命令打了一个jar包, 

用jar命令看了一下用法,

game.jar是jar包名字,org是class包名

jar cvf game.jar org

这样就打了一个game.jar的包,然后新建一个批处理文件game.bat,内容如下

java -classpath game.jar org.forum.Tetris

粗体部分是main方法的类名称这样随便放入那个目录都可以运行了

上面那篇文章里面,用的命令是这样的

cd e:\patentOfficeData\bin
java -jar init.jar
pause

但这个如果移植一下就不行了,所以改了,记录于此,方便下次查询



手动打包 Java 类库,可以使用 Java 提供的 `jar` 工具。`jar` 是 Java 提供的一个命令工具,用于将多个 `.class` 文件、资源文件和清单文件打包成一个 `.jar` 文件。 ### 使用 `jar` 命令打包类库 #### 1. 编译 Java 类文件 在打包之前,需要确保所有的 `.java` 源文件已经编译为 `.class` 文件。可以使用 `javac` 命令进行编译: ```bash javac -d . MyClass.java ``` 该命令会将 `MyClass.java` 编译为 `.class` 文件,并按照包结构存放在当前目录下。 #### 2. 使用 `jar` 命令打包 打包的基本命令格式如下: ```bash jar cf jar文件名.jar打包的文件列表或目录 ``` - `c`:表示创建一个新的 JAR 文件。 - `f`:指定 JAR 文件名。 例如,如果要将 `com/example/MyClass.class` 打包为 `mylibrary.jar`: ```bash jar cf mylibrary.jar com/example/MyClass.class ``` 若要打包整个目录下的所有类文件(例如 `com` 目录包含完整的包结构): ```bash jar cf mylibrary.jar com ``` #### 3. 添加清单文件(可选) JAR 文件中的 `MANIFEST.MF` 文件可以用于指定元数据,例如主类(Main-Class)等信息。如果需要指定某个类作为可执行 JAR 的入口点,可以在 `MANIFEST.MF` 文件中添加: ``` Main-Class: com.example.MyClass ``` 然后使用以下命令打包: ```bash jar cfm mylibrary.jar MANIFEST.MF com ``` - `m`:表示使用指定的清单文件。 #### 4. 验证 JAR 文件 打包完成后,可以使用以下命令查看 JAR 文件内容: ```bash jar tf mylibrary.jar ``` - `t`:表示列出 JAR 文件中的内容。 #### 5. 使用 JAR 文件 打包完成后,可以将其作为依赖库引入到其他 Java 项目中,或者通过以下命令运行可执行 JAR 文件: ```bash java -jar mylibrary.jar ``` ### 示例:完整打包流程 ```bash # 1. 编译源文件 javac -d . MyClass.java # 2. 创建清单文件(可选) echo "Main-Class: MyClass" > MANIFEST.MF # 3. 打包 JAR 文件 jar cfm mylibrary.jar MANIFEST.MF MyClass.class # 4. 运行 JAR 文件 java -jar mylibrary.jar ``` ### 注意事项 - 包结构必须与目录结构一致。例如,类 `com.example.MyClass` 应该存放在 `com/example/MyClass.class` 路径下。 - 如果 JAR 文件需要被其他项目引用,建议使用 `-d` 选项生成目录结构,以确保类路径正确[^4]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值