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如下:

目錄文件如下:

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章