JDK CLASSPATH 設定 (configure)
Class Path,JRE會依照此路徑的設定去尋找對應的class檔與相關資源(程式要讀取的檔案等)。使用JDK的程式(java.exe or javac.exe),可以不設定classpath,原始會有一個預設值(default class path),就是執行java時的該目錄。
舉例來說,若是要在C:\myproject\下執行Hello.class
java Hello
若Hello有用到C:\myproject\下的其他.class檔都可以被搜尋到,不用另外指定。但是若class包在jar檔則無法被引入。
若找不到執行所需要的class會產生如下錯誤:
Exception in thread "main" java.lang.NoClassDefFoundError:packagename/classname
若用到的class檔較多、不在同一目錄下或包在jar中,則需要設定CLASSPATH。
有三種方式,不管用哪種方式,一旦設定classpath,JRE就不會再參考預設的classpath設定,會完全按照你設定來找尋class,如果設定不對就會出現前面所述的java.lang.NoClassDefFoundError
一是直接設定在windows系統的環境變數中,一開機就設定好比較方便,如果有修改則需要重開機新的設定才會生效。不管哪個版本大致上是從控制臺>系統>進階>環境變數。
可在命令列模式下輸入:
echo %classpath%
系統會顯示目前的classpath設定值
增加一個環境變數為classpath,值可能是:
.;C:\Program Files\Shared\dc.jar;C:\Program Files\Java\jdk1.5.0_15\lib;%JAVA_HOME%\lib\tools.jar
分號分隔的各是一個路徑值,請注意第一個值是一個點".",這個代表執行該class當前的目錄,也就是前述的預設值,但因我們現在已經用系統的環境變數去覆蓋預設值,因此必須要設定當前目錄,這是最常見的錯誤,否則會連一個class都執行不起來。
另外兩種就是JDK手冊上提到的方法:
用set指令去設定,好處是不用重開機就可以生效,但是值不會被存下來,也就是重開機之後就會恢復成系統設定值,而且會覆蓋前述的環境參數值。
C:> set CLASSPATH=classpath1;classpath2...
另一種則是在執行時在指定。
C:> sdkTool -classpath classpath1;classpath2...
sdkTool代表的可能是java, javac等執行檔。
以上兩個方法,如果只是要增加一兩個路徑,可以用
set CLASSPATH= %CLASSPATH%;d:\workspace
java -classpath %CLASSPATH%;d:\workspace
可在保留原系統設定路徑的條件下增加路徑而,%CLASSPATH%代表原有的classpath環境參數值。
相關連結:
http://java.sun.com/j2se/1.5.0/docs/tooldocs/windows/classpath.html
Class Path,JRE會依照此路徑的設定去尋找對應的class檔與相關資源(程式要讀取的檔案等)。使用JDK的程式(java.exe or javac.exe),可以不設定classpath,原始會有一個預設值(default class path),就是執行java時的該目錄。
舉例來說,若是要在C:\myproject\下執行Hello.class
java Hello
若Hello有用到C:\myproject\下的其他.class檔都可以被搜尋到,不用另外指定。但是若class包在jar檔則無法被引入。
若找不到執行所需要的class會產生如下錯誤:
Exception in thread "main" java.lang.NoClassDefFoundError:packagename/classname
若用到的class檔較多、不在同一目錄下或包在jar中,則需要設定CLASSPATH。
有三種方式,不管用哪種方式,一旦設定classpath,JRE就不會再參考預設的classpath設定,會完全按照你設定來找尋class,如果設定不對就會出現前面所述的java.lang.NoClassDefFoundError
一是直接設定在windows系統的環境變數中,一開機就設定好比較方便,如果有修改則需要重開機新的設定才會生效。不管哪個版本大致上是從控制臺>系統>進階>環境變數。
可在命令列模式下輸入:
echo %classpath%
系統會顯示目前的classpath設定值
增加一個環境變數為classpath,值可能是:
.;C:\Program Files\Shared\dc.jar;C:\Program Files\Java\jdk1.5.0_15\lib;%JAVA_HOME%\lib\tools.jar
分號分隔的各是一個路徑值,請注意第一個值是一個點".",這個代表執行該class當前的目錄,也就是前述的預設值,但因我們現在已經用系統的環境變數去覆蓋預設值,因此必須要設定當前目錄,這是最常見的錯誤,否則會連一個class都執行不起來。
另外兩種就是JDK手冊上提到的方法:
用set指令去設定,好處是不用重開機就可以生效,但是值不會被存下來,也就是重開機之後就會恢復成系統設定值,而且會覆蓋前述的環境參數值。
C:> set CLASSPATH=classpath1;classpath2...
另一種則是在執行時在指定。
C:> sdkTool -classpath classpath1;classpath2...
sdkTool代表的可能是java, javac等執行檔。
以上兩個方法,如果只是要增加一兩個路徑,可以用
set CLASSPATH= %CLASSPATH%;d:\workspace
java -classpath %CLASSPATH%;d:\workspace
可在保留原系統設定路徑的條件下增加路徑而,%CLASSPATH%代表原有的classpath環境參數值。
相關連結:
http://java.sun.com/j2se/1.5.0/docs/tooldocs/windows/classpath.html
留言