這里給你一個(gè)具體的場景來講述如何使用命令行編譯和運(yùn)行Java代碼:
創(chuàng)新互聯(lián)專注為客戶提供全方位的互聯(lián)網(wǎng)綜合服務(wù),包含不限于做網(wǎng)站、成都網(wǎng)站建設(shè)、米易網(wǎng)絡(luò)推廣、小程序開發(fā)、米易網(wǎng)絡(luò)營銷、米易企業(yè)策劃、米易品牌公關(guān)、搜索引擎seo、人物專訪、企業(yè)宣傳片、企業(yè)代運(yùn)營等,從售前售中售后,我們都將竭誠為您服務(wù),您的肯定,是我們最大的嘉獎;創(chuàng)新互聯(lián)為所有大學(xué)生創(chuàng)業(yè)者提供米易建站搭建服務(wù),24小時(shí)服務(wù)熱線:18980820575,官方網(wǎng)址:www.cdcxhl.com
任務(wù)
我們有一個(gè)相當(dāng)標(biāo)準(zhǔn)的Java工程,它包含三個(gè)頂層文件夾:
/bin-用來存放已編譯好的.class文件
/lib-用來存放第三方.jar文件
/src-存放.java源代碼
我的任務(wù)就是要從Java工程根目錄去編譯和運(yùn)行工程。我們將使用Windows操作系統(tǒng)作為例子(和在Unix系統(tǒng)上的唯一區(qū)別就是路徑分隔符是”:“而不是”;“)。
編譯Java代碼
第一步是把文本文件.java源代碼編譯成Java虛擬機(jī)字節(jié)碼文件(.class)。這一步使用一個(gè)叫javac的JDK工具來完成。
假設(shè)我們在應(yīng)用的根目錄下,從com.example包下嘗試把Application.java文件,以及把lib文件夾中的lib1.jar和lib2.jar庫編譯到目標(biāo)文件夾bin下,編譯命令應(yīng)該是如下格式:
javac -d bin -sourcepath src -cp lib/lib1.jar;lib/lib2.jar src/com/example/Application.java1
編譯完后,/bin/com/example/Application.class應(yīng)該就會創(chuàng)建出來了。如何Application.java使用了其他工程的類,那么他們?nèi)繒詣颖痪幾g并且放到相應(yīng)的文件夾下。
運(yùn)行Java代碼
為了啟動我們剛剛編譯的.class文件,需要另外一個(gè)叫java的JDK工具。
假設(shè)我們在應(yīng)用的根目錄下,為了能夠啟動com.example包中的,使用了lib文件夾下的lib1.jar和lib2.jar庫的Application.class文件,啟動命令應(yīng)該是如下
java -cp bin;lib/lib1.jar;lib/lib2.jar com.example.Application
我們在這里沒有提供文件名,只有一個(gè)實(shí)際的類名,java會基于提供的classpath(縮寫成cp)路徑去搜索。
步驟:
1、在cmd中切換到編寫的代碼所保存的目錄下;
2、在cmd中輸入javac然后點(diǎn)空格,再點(diǎn)擊文件名和包括后綴名確定后,在存放編寫代碼的文件下會生成一個(gè)class的字節(jié)碼文件;
3、在cmd中輸入java然后點(diǎn)空格,輸入第二步中生成的字節(jié)碼的文件名,不需要后綴名,點(diǎn)擊確定即可運(yùn)行代碼。
代碼就是程序員用開發(fā)工具所支持的語言寫出來的源文件,是一組由字符、符號或信號碼元以離散形式表示信息的明確的規(guī)則體系。計(jì)算機(jī)代碼稱為源代碼,是相對目標(biāo)代碼和可執(zhí)行代碼而言的。 源代碼就是用匯編語言和高級語言寫出來的地代碼,目標(biāo)代碼是指源代碼經(jīng)過編譯程序產(chǎn)生的能被cpu直接識別二進(jìn)制代碼。
Java運(yùn)行命令行并獲取返回值,下面以簡單的Java執(zhí)行ping命令(ping 127.0.0.1 -t
)為例,代碼如下:
Process?p?=?Runtime.getRuntime().exec("ping?127.0.0.1?-t");
Process?p?=?Runtime.getRuntime().exec("javac");
InputStream?is?=?p.getInputStream();
BufferedReader?reader?=?new?BufferedReader(new?InputStreamReader(is));
String?line;
while((line?=?reader.readLine())!=?null){
System.out.println(line);
}
p.waitFor();
is.close();
reader.close();
p.destroy();
}