1.libs新建文件夾存放依賴所有jar包
2.cmd 執行:
2.1
javac -encoding UTF-8 -classpath .;C:\Users\chenquan\IdeaProjects\Toy\libs\commons-codec-1.12.jar;C:\Users\chenquan\IdeaProjects\Toy\libs\commons-lang3-3.9.jar -d . C:\Users\chenquan\IdeaProjects\Toy\src\test\SignNatureTest.java
2.2
javac -encoding UTF-8 -classpath .;C:\Users\chenquan\IdeaProjects\Toy\libs\commons-codec-1.12.jar;C:\Users\chenquan\IdeaProjects\Toy\libs\commons-lang3-3.9.jar -d . C:\Users\chenquan\IdeaProjects\Toy\src\test\SignNatureTest.java
1. encoding 防止中文亂碼 2. -classpath 指定class文件路徑 3. -d . 會在當前執行目錄下生成 一個java所在的包名的(這里我的是test)目錄,以及編譯后的class文件 4. 指定要被編譯的java文件
3.運行編譯的class文件:最開始一直報無法找到主類問題,郁悶,后面查了下資料發先這個要帶class文件的package的包名(這里是test)與python -m moudle.class.method 雷同,簡直了哈哈哈
3.優化,由於依賴包很多,不可能每個都敲上去吧:
path_jars 可以是相對路徑也可以是絕對路徑
java -Djava.ext.dirs=path_jars package.className
java -Djava.ext.dirs=C:\Users\chenquan\IdeaProjects\Toy\libs test.SignNatureTest
java -Djava.ext.dirs=./ test.SignNatureTest
C:\Users\chenquan\IdeaProjects\Toy\libs>java -Djava.ext.dirs=./ test.SignNatureTest
&k1=values1&k2=33
MD5string is: 832c599beef71cce2ca7e3953b4dc5fb2019-08-03 19:23:02
4.批量依賴編譯:
javac -encoding UTF-8 -Djava.ext.dirs=./ -d . C:\Users\chenquan\IdeaProjects\Toy\src\test\SignNatureTest.java
javac -encoding UTF-8 -Djava.ext.dirs=./ C:\Users\chenquan\IdeaProjects\Toy\src\test\SignNatureTest.java
發現一個有趣的事情: 不指定classpath 和 d .生成的位置會默認到.java所在包下面:
致謝這些良心博主:https://blog.csdn.net/yiluoAK_47/article/details/81975536
https://blog.csdn.net/tuohuang0303/article/details/84304995
https://blog.csdn.net/myfmyfmyfmyf/article/details/53179395
以上都是命令行操作對於IDEA其實已經有了手動編譯的功能,只不過要求你手動配置libarary解決代碼引用jar包類,在進行recompile:
linux test:
javac -encoding UTF-8 -Djava.ext.dirs=./ -d . ./SignNatureTest.java
echo compile finished,generate .class under package test at curdir
java -Djava.ext.dirs=./ test.SignNatureTest
echo run sign.class success !!!