欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

命令行下运行Java程序的方法

程序员文章站 2022-06-05 18:11:12
...

这是个简单但容易忽略的问题,新手往往被一些看似不起眼的小坑阻挡而裹足不前——本文旨在以最轻松的氛围讲解如何在命令行界面下运行Java程序,包括使用Jar工具进行打包


写在前面

Java的文件体系

Java的.java源程序(source code)要被编译成.class文件即类文件(class file,全称Java class file),它在平台无关性方面的任务是:为Java程序提供独立于底层主机平台的二进制形式的服务——不管怎么样,它就是一个二进制文件(binary file)

而要和计算机打交道,就是通过二进制文件进行的

另外,如果在IDE中编写Java程序,IDE通常会为开发者提供舒适的开发环境:src文件中存放源程序,而bin文件中存放编译后的类文件

Java的JDK工具包

Sun公司官网下载Java SE版本(标准版Java)的JDK(Java Development Kit),你会得到:1)JRE(Java Runtime Environment),2)Java核心类库,3)Java工具包

其中,Java工具包包括javajavacjavadoc等,都是一些命令行实用工具

Java的环境变量搭建

要想在命令行模式下运行Java程序,就得把Java的相关属性变量导到用户的环境变量中去

我的Shell是zsh,但是这并不妨碍~/.bash_profile文件的执行

vi ~/.bash_profile

命令行下运行Java程序的方法


执行class文件

通过如下命令行指令先将.java文件编译为.class文件

javac Foo.java

这会得到一个文件名为Foo.class.class文件;接着使用java指令对运行该二进制文件

java Foo.class

举例如下:

1)写一个简单的demo,注意文件名和公共类的类名一致

命令行下运行Java程序的方法

2)javac命令编译该源程序,得到.class文件

命令行下运行Java程序的方法

3)java命令运行该编译后的Java类文件

命令行下运行Java程序的方法

需要注意的是,如果用IDE进行编写(或者对于有着良好习惯的coder),我们编译后的文件通常在包(package)文件夹下面,在cd到工程目录(project direcorry)下后,这时候需要显式写出包名.类文件名的形式,以指定包名(相当于相对路径寻址)


执行jar文件

.jar文件等于.class文件和其它一些程序必须的素材文件之和,比如一个Java工程引用了目录下的一张图片、一段音乐,如果想把它们和代码文件合成为一个入口文件即.jar文件,就要用到jar打包技术

.jar命令行工具同样随JDK一并导入用户所在环境

jar命令的参数有很多

命令行下运行Java程序的方法

从实战、实用角度出发,我们推荐使用如下打包命令

jar cvfm Foo.class

其中m参数指定一个mainfest文件(包括Java class文件的相关信息)

最简单的mainfest文件可以这样写

注意:在Main-Class:后面有一个空格,否则在识别时会报错

命令行下运行Java程序的方法

写好了mainfest文件就可以进行打包了

jar cvfm foo.jar mainfest.mf *.class

*.class中星号通配符会匹配当前目下所有的Java类文件(这里只有一个类文件用处不大,仅作为说明)

然后使用java -jar 文件名.jar在终端下运行该.jar文件

命令行下运行Java程序的方法

说明三点:1)最后不要使用open直接打开.jar文件,否则可能会出现下面的情况

命令行下运行Java程序的方法

2)如果使用IDE进行开发,通常它集成了.jar文件打包功能(自己摸索)

3)还是考虑到Java文件体系,如果有包的话,就写出完整包名