java編譯時(shí)指定classpath的實(shí)現(xiàn)方法
說(shuō)明
- Java編譯時(shí)可以通過(guò)選項(xiàng)
--class-path <path>,或者 -classpath <path>,或者-cp <path>
來(lái)指定查找用戶(hù)類(lèi)文件、注釋程序處理程序、或者源文件的位置。 - 這個(gè)設(shè)置覆蓋CLASSPATH環(huán)境變量的設(shè)置。
- 如果沒(méi)有設(shè)置
-sourcepath
,那么--class-path <path>,或者 -classpath <path>,或者-cp <path>
指定的路徑也會(huì)被用來(lái)查找源文件。 - 如果沒(méi)有設(shè)置
-processorpath
,那么--class-path <path>,或者 -classpath <path>,或者-cp <path>
指定的路徑也會(huì)被用來(lái)查找注解處理器。
注意:--class-path <path>,或者 -classpath <path>,或者-cp <path>
指定的路徑是指存放Java包的位置,里邊不包含Java包的路徑
舉例
Java類(lèi)的層次結(jié)構(gòu)(后面幾個(gè)例子用到)
例如java源文件的層次結(jié)構(gòu)如下,其中com.thb
和com.thb.bian
是Java包名:
Person 類(lèi)是一個(gè)父類(lèi):
package com.thb; public class Person { public String getOccupation() { return ""; } }
Student 類(lèi)是Person 類(lèi)的子類(lèi),并且和Person 類(lèi)在同一個(gè)包中:
package com.thb; public class Student extends Person { @Override public String getOccupation() { return "student"; } }
Teacher 類(lèi)是Person 類(lèi)的子類(lèi),并且和Person 類(lèi)不在同一個(gè)包中:
package com.thb.bian; import com.thb.Person; public class Teacher extends Person { @Override public String getOccupation() { return "teacher"; } }
不指定依賴(lài)的classpath,編譯出錯(cuò)
現(xiàn)在不指定classpath,編譯Teacher.java文件:
從上面輸出可以看到,出錯(cuò)了,這是因?yàn)門(mén)eacher依賴(lài)于Person,找不到。
不指定classpath,編譯Student.java文件,盡管和依賴(lài)的Person在同一個(gè)包中,也會(huì)出錯(cuò):
指定依賴(lài)的classpath中含有包名,編譯出錯(cuò)
下面用-classpath src\com\thb
指定了依賴(lài)的路徑,但是錯(cuò)誤的,因?yàn)?code>com/thb是包名的一部分,不應(yīng)該包含在內(nèi):
指定了依賴(lài)的正確classpath,編譯成功
下面用-classpath src
指定了依賴(lài)的源文件Person.java的位置,編譯成功
到輸出目錄下查看,Teacher.java文件和依賴(lài)的Person.java都被編譯了:
同時(shí)編譯被依賴(lài)的源文件,可以不指定依賴(lài)的classpath 在src/com/thb目錄下有Person.java和Student.java文件,其中Student依賴(lài)于Person,現(xiàn)在全部編譯該目錄下的文件,不指定依賴(lài)的classpath編譯成功:
到輸出目錄下查看,生成了正常的class文件:
在src/com/thb目錄下有Person.java和Student.java文件,src/com/thb/bian目錄下有Teacher.java文件,其中Student和Teacher都依賴(lài)于Person。在現(xiàn)在全部編譯該目錄下的文件,不指定依賴(lài)的classpath編譯成功:
到輸出目錄下查看,生成了正常的class文件:
到此這篇關(guān)于java編譯時(shí)指定classpath的實(shí)現(xiàn)方法的文章就介紹到這了,更多相關(guān)java編譯時(shí)指定classpath內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Java并發(fā)編程之Condition源碼分析(推薦)
這篇文章主要介紹了Java并發(fā)編程之Condition源碼分析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-03-03Geotools實(shí)現(xiàn)shape文件的寫(xiě)入功能
Geotools作為開(kāi)源的Java?GIS三方庫(kù),已經(jīng)成為GIS服務(wù)器端的主流開(kāi)源庫(kù),其功能非常強(qiáng)大,涉及到GIS業(yè)務(wù)的方方面面,其中就包括GIS數(shù)據(jù)的讀寫(xiě),今天小編就借助Geotools來(lái)實(shí)現(xiàn)shape數(shù)據(jù)的寫(xiě)入,需要的朋友可以參考下2023-08-08Springboot基礎(chǔ)之RedisUtils工具類(lèi)
本文來(lái)說(shuō)下RedisUtils工具類(lèi),主要介紹了整合Redis、MyBatis,封裝RedisUtils工具類(lèi)等知識(shí),文中有非常詳細(xì)的代碼示例,對(duì)正在學(xué)習(xí)java的小伙伴們有很好的幫助,需要的朋友可以參考下2021-05-05spring-boot-starter-security的簡(jiǎn)單使用方式
文章介紹了三種使用Spring Boot Security的方法:基于配置文件、基于配置類(lèi)和基于注解的方式,通過(guò)這些方法,可以實(shí)現(xiàn)對(duì)Web應(yīng)用的權(quán)限控制,確保只有授權(quán)用戶(hù)才能訪問(wèn)特定資源2024-11-11JavaWeb項(xiàng)目中JSP訪問(wèn)的問(wèn)題解決
JSP文件一般有兩個(gè)存放位置,本文主要介紹了JavaWeb項(xiàng)目中JSP訪問(wèn)的問(wèn)題解決,具有一定的參考價(jià)值,感興趣的可以了解一下2024-01-01