使用javac命令編譯帶包名的類,然后再使用java命令運行編譯后的class文件很容易報找不到或無法加載主類,原因是使用javac編譯java文件時沒有添加-d選項使每一級包編譯為對應的文件夾
eg:
擴:
1、如果java文件中有中文,必須在javac編譯的時候用-encoding選項指定編碼,java運行的時候不用再-encoding了,如:
javac -encoding UTF-8 xx.java
或
javac -encoding "UTF-8" xx.java
選項值既可以加引號,也可以不加引號
2、如果java文件中有引用其他jar包內的文件,必須編譯和運行的使用使用-classpath或-cp(classpath的縮寫)選項指定尋找的jar包(多個jar包之間用分號分割,最好指定一下用點號表示的當前目錄,否則運行時會找不到當前類的class文件),如:
javac -encoding UTF-8 -classpath ".;a.jar" xx.java -d .
java -encoding "UTF-8" -cp .;a.jar x.xx
選項值既可以加引號,也可以不加引號
2.1、寫程序的時候,會使用import語句來引入一些已經寫好的類,設置CLASSPATH就是告訴編譯器要如何去哪里找引用的類;sun 為我們提供了一些額外的豐富的類包,一個是 dt.jar,一個是 tools.jar,這兩個 jar 包都位於%JAVA_HOME%\lib 目錄下,所以通常我們都會把這兩個 jar 包加到我們的 classpath 環境變量中設置” CLASSPATH : %JAVA_HOME%\lib\dt.jar; %JAVA_HOME%\lib\tools.jar;”(前面的“.”不可少,它代表了我們為自己的java類建立的工作路徑,其它的是jdk自帶的標准類庫路徑)
在jdk1.6以后,不用設定CLASSPATH,仍然能夠找到jdk的類庫,編譯基本的JAVA程序。