java在cmd運行"-d"和"-cp"參數解讀
1. “-d"和”-cp"參數的用法
“-d” 參數
javac 有一個’-d’參數,后跟一個目錄路徑,其指定編譯的字節(jié)碼(xx.class)文件放到什么目錄下,特別當類定義在一個包中時,javac會在參數指定目錄下產生包名子目錄并將類字節(jié)碼文件放入其中。
“-cp” 參數
javac 還有一個’-cp’參數,后跟一個或多個 帶有分隔的 目錄路徑或庫文件(.jar 或 .zip),其 指定import代碼指令表達的字節(jié)碼文件放在什么地方 (可以理解為’-cp’用來尋找import導入的或者本 身編譯成功后的字節(jié)碼文件),此參數可以在classpath環(huán)境變量中設置。
java 也有一個’-cp’參數,意義同javac
2. 一個java程序的編譯
首先我在E盤下的my_test文件夾下建了兩個Java程序,class為空文件夾

Person的編譯
Person.java代碼如下:
//命名為 Person.java
package lib; //package說明此類(Person)在說明lib包下
public class Person{
public static int m=10;
public static void main(String[] args){
System.out.println("hello,this is Person");
}
}一、編譯字節(jié)文件到當前目錄
1.編譯Person.java,生成java.class到當前目錄下, 運行 javac -d . Person.java (注意 '-d’后面有個 ‘空格’ 然后才有 ‘.’)
自動生成lib文件夾,并且將編譯的Person.class放在lib下

2.因為Person.class在當前目錄下的lib文件夾中
所以運行java lib.Person 執(zhí)行Person.class
輸出結果 hello,this is Person

二、編譯字節(jié)文件到當前目錄的子文件夾
1.編譯Person.java,生成java.class到class文件夾下
運行 javac -d ./class Person.java 在class文件夾下自動產生lib文件夾,并生成Person.class文件

2.運行 java -cp ./class lib.Person 輸出結果
注:生成的字節(jié)碼文件Person.class在文件夾class下面,所以要用 “-cp” 來找到 Person.class 注意有空格,不能忽略

3. 兩個java程序間的調用編譯
My.java 中需要調用Person的成員,為了更好的理解參數意義,我們把My.java 和 Person.java 都放在class文件夾下運行
My.java 代碼如下:(調用Person中的成員)
//命名為 My.java
package longpf; //說明此類(My)在longpf包下
import lib.Person;
public class My{
public static void main(String[] args){
System.out.println(new Person().m)//調用輸出Person中的成員m
}
}注:My在包longpf下,Person在包lib下,見代碼第一行package:
編譯運行My.java

過程如下:
1.執(zhí)行 javac -d ./class Person.java ,在class文件中產生lib包
2.執(zhí)行javac -cp ./class -d ./class My.java ,因為My.java中有import Person ,所以要找到Person.class,即 -cp參數,-cp ./class 到class文件夾下 .
代表當前目錄,-d ./class 表示編譯生成的My.class放在當前目錄的class文件夾下(代碼中package longpf; 自動生成longpf包),注意不能丟掉空格

3.執(zhí)行java -cp ./class longpf.My,最后找到class下的longpf包,里面的My.class運行。
輸出結果 Perosn中的m成員 10;
一定要在包longpf外用 ’ . '調用My,否則的話會顯示錯誤,如圖:

總結
以上為個人經驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
SpringBoot詳細講解異步任務如何獲取HttpServletRequest
在使用框架日常開發(fā)中需要在controller中進行一些異步操作減少請求時間,但是發(fā)現(xiàn)在使用@Anysc注解后會出現(xiàn)Request對象無法獲取的情況,本文就此情況給出完整的解決方案2022-04-04
Spring Cloud Feign性能優(yōu)化代碼實例
這篇文章主要介紹了Spring Cloud Feign性能優(yōu)化代碼實例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下2020-03-03
Mybatis中兼容多數據源的databaseId(databaseIdProvider)的簡單使用方法
本文主要介紹了Mybatis中兼容多數據源的databaseId(databaseIdProvider)的簡單使用方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2024-07-07
SpringCloud實現(xiàn)Eureka服務注冊與發(fā)現(xiàn)
這篇文章主要介紹了SpringCloud如何實現(xiàn)Eureka服務注冊與發(fā)現(xiàn),幫助大家更好的理解和學習使用SpringCloud,感興趣的朋友可以了解下2021-05-05

