使用 java 命令编译运行 java 程序

java 编译的过程,就是将 java 项目从源文件变成 .class 文件的过程,而 .class 文件,最后会被加载到JVM 中运行。在 JDK bin/ 目录下,提供了 javac 命令,用于将 .java 源文件编译成 .class 字节码文件,提供了 java 命令,以 Main_Class 为入口,根据运行需要,加载相应的 class 文件到 JVM 中执行。

关于环境变量

如果在没有引用第三方 jar 的情况下,想在任意目录下直接运行 javac 编译 .java 文件,则需要设置 PATH 和 CLASSPATH 环境变量,关于如何设置,可参考 Ubuntu 下如何设置 Java 环境变量

两种情况

如果 java 程序只有单个 .java 文件,且里面有 public static void main(String[] args) 方法,可以直接使用 javac 编译生成 .class 文件 -> 使用 java 命令运行程序

> javac Hello.java
> java Hello

如果有多个 .java 文件,则多了一个步骤,需要先打包成 .jar 文件,最后使用 java -jar xx.jar 命令运行即可

jar 命令生成 jar 包

> cd classes // 首先进入根目录,否则打包会有问题
> touch MANIFEST.MF
> jar -cvfm xx.jar MANIFEST.MF com/

c 表示创建压缩包 .jar 包
v 表示 显示详细信息
m 表示将后面的清单文件 MANIFEST.MF 一并打包到 jar 里面去,注意这个不能省略
xx.jar 表示最终生成的 jar包名

其中 清单文件 MANIFEST.MF 的内容如下:

// 清单版本
Manifest-Version: 1.0
// jar 包运行后的 main 函数入口类
Main-Class: com.linky.Main

打包成功后,会在根目录下生成 META-INF/ 和 com/ 两个子目录,其中 META-INF/ 中存放了清单文件MANIFEST.MF,com/ 目录下存放了所有 .class 文件。

如果有多个 .java 文件,可以将需要编译的 .java 文件,包括 package,写入 sourcelist(可随便命名) 中,详情可见 javac

完整命令如下:

> find com/ -name '*.java' > sourcelist 
> javac @sourcelist -d classes/
> cd classes/
> touch MANIFEST.MF // 添加如下语句到该文件中,然后保存

Manifest-Version: 1.0		
Main-Class: com.linky.Server	// 里面包含 main 入口函数

> jar -cvfm server.jar MANIFEST.MF com/
> java -jar server.jar
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值