经常使用eclipse 编译运行java 程序,从没有考虑后台怎么编译和运行,现在需要做自动化框架,使用ant 来编译和运行,一下子就发现这块是个问题,命令行javac 和 java 需要更深的了解和使用,下面是多次错误尝试后总结的正确命令和错误点。
详细了解Javac 的使用方式, 命令行中输入javac,回车就可以知道:
javac [options] [source files] @filename
[options] : 命令行选项
- -cp / -classpath: Specify where to find user class files and annotation processors.
- -d :Specify where to place generated class files. 默认情况下不指定class文件的存放目录,编译的class文件将和源文件在同一目录下
[source files] : 源文件 - 可以使用绝对路径和相对路径
@filename : 当多个源文件需要编译时,可以将多个文件名写入文件中,适合用于工程。
如下案例是, 针对使用了第三方jar文件的源文件进行编译:
//首先进入项目目录下
cd test_project
//在项目目录下执行编译
javac –cp .;lib/byte-buddy-1.8.15.jar;lib/client-combined-3.141.59.jar;lib/commons-exec-1.3.jar;lib/commons-io-2.6.jar;lib/guava-25.0-jre.jar;lib/okhttp-3.11.0.jar;lib/okio-1.14.0.jar –d ./bin/ src/main/java/avik/HelloWorld.java
java [options] class [args...] - execute a class
[options] : 命令行选项
- -cp / -classpath: class search path of directories and zip/jar file. A ";" separated list of directories, jar archives, and zip archives to search for class files.
重点:
java 的命令里classpath jar 文件需要写绝对路径,而且不能支持通配符,而且在classpath 前面必须加.;表示执行或者编译的文件所在当前目录
如下案例:
// 进入bin目录,class 文件生成的地方
cd bin
//java 命令执行引用了第三方jar 包的class文件
java –cp .;C:/test_project/lib/byte-buddy-1.8.15.jar;C:/test_project/lib/client-combined-3.141.59.jar;C:/test_project/lib/commons-exec-1.3.jar;C:/test_project/lib/commons-io-2.6.jar;C:/test_project/lib/guava-25.0-jre.jar;C:/test_project/lib/okhttp-3.11.0.jar;C:/test_project/lib/okio-1.14.0.jar avik.HelloWorld
java [-options] -jar jarfile [args...] - execute a jar file