Linux终端编译java程序

最近在看disni,一个基于java语言的RDMA库,给的代码需要在终端编译运行,以前写java程序都是用IDE写,对于如何在终端编译和运行java程序一窍不通啊。

被disni虐了几天,对在终端编译java程序也有了认识,把之前记录的笔记整理了一些出来。

最简单的情况

最简单的情况是指只有一个.java文件,没有import别的jar包,没有package。比如:

Linux终端编译java程序

这种情况下最简单,直接使用javac命令就可以了

Linux终端编译java程序

依赖其他.jar文件的情况

这种,在idea或者eclipse下,我们通过在项目中引入相关的jar包就可以了,但是在终端编译时需要在javac指令后面添加相应的参数才可以。

Linux终端编译java程序

上图是一个对excel解析的程序,可以看到项目中引入了jxl.jar和poi-3.15.jar文件,我们在终端对Form.java进行编译,首先进入进入src目录

Linux终端编译java程序

我们引入两个jar包还好,如果引入多个jar包自然是不合理的。可以采用下面简单一点的办法

Linux终端编译java程序

通过-Djava.ext.dirs参数可以指定所有引入jar包所在的目录,并一次把所有的.java文件都编译了。不过这里竟然有个小坑,指定路径的时候使用~竟然会找不到。。。

在运行的时候,我们依然要指定引入jar所在的位置。
Linux终端编译java程序

源码在package中的情况

上面的Form.java直接在src的根目录,所以在编译的时候还是比较简单的,当源码在src下其他目录时,编译的时候也只需要带上package路径就可以了。

Linux终端编译java程序

现在Form.java在/src/com/lab2/ecnu/目录下,我们编译的时候还是在src目录进行。

Linux终端编译java程序

这里有一些注意的是,我们甚至可以直接到src/com/lab2/ecnu/目录下编译.java文件,但是不可以在src/com/lab2/ecnu/目录下执行。

Linux终端编译java程序