一般来说 IDE 能够很方便的编译打包。
我写这篇文章是遇到了不能使用 IDE 的情况,本着够用就行的原则简单记录一下操作命令,不做深入探讨。
了解一下也没有坏处。
linux
jdk 1.8
# 创建演示目录
/usr/local/mytest
# 创建代码目录
/usr/local/mytest/src
# 创建代码包路径
/usr/local/mytest/src/com/demo
# 进入演示目录
cd /usr/local/mytest
创建文件 src/com/demo/Hello.java
,文件内容
package com.demo;
public class Hello {
public static void main(String[] args) {
System.out.println("hello");
}
}
最终,mytest 目录下的结构
编译文件
javac src/com/demo/Hello.java
生成 src/com/demo/Hello.class
文件
执行
java -cp src com.demo.Hello
-cp src
把 src 目录添加为 classpath 目录
可以看到输出 hello
打包只应该包含 class 文件,所以我们创建一个目录 target
mkdir /usr/local/mytest/target
编译指定输出到 target 目录
javac src/com/demo/Hello.java -d target
可以看到,新生成的 .class 在 target 下面
打包,-C target .
指定把 target
下所有文件打包
jar -cvf my.jar -C target .
可以看到,当前目录多了 my.jar
文件
尝试执行
java -jar my.jar
报错 my.jar中没有主清单属性
,这不是可执行 jar 包
需要这样执行,把 my.jar 添加到 classpath,指定执行 com.demo.Hello
java -cp my.jar com.demo.Hello
创建 /usr/local/mytest/MANIFEST.MF
文件,文件名任意,内容:
Main-Class: com.demo.Hello
这个内容告诉 jar 包,com.demo.Hello 是入口
打包时添加 m
参数,并附带刚才创建的文件
jar -cvfm my.jar MANIFEST.MF -C target .
再次执行 my.jar
java -jar my.jar
成功输出 hello
原文:https://www.cnblogs.com/eoalfj/p/12332808.html