简单的问题,但是长期依赖于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如下:
目录文件如下: