javac、java命令如何编译运行目标类以及其类引入的外部jar包

简单的问题,但是长期依赖于IDE工具,基本的java命令生疏了,将此次的过程简单记述如下。

需求:要把AES类编译成class文件。

步骤:1)将该类中所有引入的外部类jar包整理,比如:

import net.sf.json.JSONObject;

import java.net.URLDecoder;
import java.net.URLEncoder;

import javax.crypto.Cipher;
import javax.crypto.spec.IvParameterSpec;
import javax.crypto.spec.SecretKeySpec;

这些比如在:

 

D:\Program Files\Java\jdk1.7.0_79\jre\lib\rt.jar;

D:\Program Files\Java\jdk1.7.0_79\jre\lib\jce.jar;

C:\Users\DB004\.m2\repository\fakepath\json-lib\2.3\json-lib-2.3-jdk15.jar;

C:\Users\DB004\.m2\repository\net\sf\ezmorph\ezmorph\1.0.6\ezmorph-1.0.6.jar

等等路径下,可以将这些依赖的jar包拷贝出来放到d:\aes目录下,另外有JSONObject的话(没有明显看出依赖的jar包但是运行时会报错,根据报错可以找到所有需要的jar包),还需要加入commons-beanutils-1.8.3.jar、commons-collections-3.2.1.jar、commons-lang-2.6.jar、commons-logging-1.2.jar。

2)找出还有依赖同路径下的其他类,比如Base64Utils类

3)写出javac编译命令:

首先进入d:\aes目录。

在cmd下,输入命令:

javac -encoding UTF-8 -classpath .;D:\aes\rt.jar;D:\aes\jce.jar;D:\aes\json-lib-2.3-jdk15.jar;D:\aes\ezmorph-1.0.6.jar;D:\aes\commons-beanutils-1.8.3.jar;D:\aes\commons-collections-3.2.1.jar;D:\aes\commons-lang-2.6.jar;D:\aes\commons-logging-1.2.jar; -d . D:\workspace\zooml-spaces\src\main\java\io\zooml\common\utils\AES.java D:\workspace\zooml-spaces\src\main\java\io\zooml\common\utils\Base64Utils.java

其中-d . 为在当前目录下依据AES.java的包路径生成路径文件夹,会将class文件放入到该路径文件夹下。

比如包路径为:io.zooml.common.utils,这时候会在d:\aes下生成 io\zooml\common\utils 文件目录,然后编译后的文件放在该文件目录下。

4)编译通过后,输入java运行命令:

java -cp .;D:\aes\rt.jar;D:\aes\jce.jar;D:\aes\json-lib-2.3-jdk15.jar;D:\aes\ezmorph-1.0.6.jar;D:\aes\commons-beanutils-1.8.3.jar;D:\aes\commons-collections-3.2.1.jar;D:\aes\commons-lang-2.6.jar;D:\aes\commons-logging-1.2.jar;D:\aes\Base64Utils  io.zooml.common.utils.AES 
 

cmd如下:

javac、java命令如何编译运行目标类以及其类引入的外部jar包

目录文件如下:

javac、java命令如何编译运行目标类以及其类引入的外部jar包

javac、java命令如何编译运行目标类以及其类引入的外部jar包