問題:在使用了java包機制(package)後,編譯出現錯誤:找不到或沒法加載主類 xxx 的錯誤提示信息(各類編譯不經過)java
編譯:javac -d classes src/a/HelloTest.java
3d
-d classes :指定存放class文件的路徑
src/a/HelloTest.java :在項目路徑:D:\javacode\Hello的基礎上指定源文件的路徑
此時D:\javacode\Hello\classes路徑下已經按照package路徑結構生成了class文件
code
運行:java -cp classes src.a.HelloTest
blog
-cp classes :指定所要調用的.class文件所在路徑(包所在的路徑)
src.a.HelloTest :源文件中所設置的package路徑(即:包名.類名)
cmd
個人本地項目路徑:D:\javacode\Hello
源文件HelloTest路徑:D:\javacode\Hello\src\a\HelloTest.java
源文件Hello路徑:D:\javacode\Hello\src\a\b\Hello.java虛擬機
注意:Java的package機制很是強調路徑,因此路徑值指定搞清楚了就不會出問題(可能會有不少人會告訴你是CLASSPATH環境變量配置問題,然而它也只是起一個指定路徑的做用,告訴java虛擬機你的class文件所在路徑而後執行;因此你本身指定是同樣的,沒有關係。)編譯
Java的package機制的使用關鍵在於對路徑的設置容易出錯;class
先了解Java編譯運行過程基礎
源文件.java--使用javac編譯-->字節碼文件.class--使用java解釋執行-->特定平臺的機器碼變量
使用規則:
1.package語句必須爲源文件的第一條語句(註釋除外);
2.一個源文件中只能有一條package語句;
在源文件有package語句時,不管是編譯仍是運行首先要肯定本身做爲調用者所在的路徑,即cmd窗口所顯示的路徑(cd指令轉換路徑),而後以這個路徑爲基礎設置源文件或者class文件的路徑(問過一些網友和搜索一些結果,大部分回覆什麼CLASSPATH環境變量配置,但並非這樣,環境配置終究也是指定class文件的存儲目錄,方便java命令能直接找到,和咱們指定同樣,因此環境變量不是關鍵,要本身理解路徑之間的結構關係);
補充:cmd相關指令:../ 匹配上一層目錄(../../爲上兩層);* 匹配文件名(如目錄下有Hello和HlloTest兩個源文件 編譯javac Hello*.java會自動匹配到HelloTest);. 表示當前路徑