java環境變量及Eclipse自動編譯問題


 環境變量,是在操作系統中一個具有特定名字的對象,它包含了一個或者多個應用程序所將使用到的信息。例如Windows和DOS操作系統中的path環境變量,當要求系統運行一個程序而沒有告訴它程序所在的完整路徑時,系統除了在當前目錄下面尋找此程序外,還應到path中指定的路徑去找。用戶通過設置環境變量,來更好的運行進程。

JAVA_HOME:它指向jdk的安裝目錄,Eclipse/NetBeans/Tomcat等軟件就是通過搜索JAVA_HOME變量來找到並使用安裝好的jdk。

變量名:JAVA_HOME
變量值:C:\Program Files\Java\jdk1.8.0_131

 

CLASSPATH環境變量。作用是指定類搜索路徑,要使用已經編寫好的類,前提當然是能夠找到它們了,JVM就是通過CLASSPATH來尋找類的。我們需要把jdk安裝目錄下的lib子目錄中的dt.jar和tools.jar設置到CLASSPATH中,當然,當前目錄“.”也必須加入到該變量中。

變量名:CLASSPATH
變量值:.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar
解釋語:dt.jar是關於運行環境的類庫,主要是swing的包在用到swing時最好加上
tools.jar工具類庫(編譯和運行等),它跟我們程序中用到的基礎類庫沒有關系。我們注意到在Path中變量值bin目錄下的各個exe工具的大小都很小,一般都在27KB左右,這是因為它們實際上僅僅相當於是一層代碼的包裝,這些工具的實現所要用到的類庫都在tools.jar中,用壓縮軟件打開tools.jar,你會發現有很多文件是和bin目錄下的exe工具相對性的,查看圖一。當然,如果tools.jar的功能只有這些的話,那么我們根本不用把它加入到CLASSPATH變量中,因為bin目錄下的工具自己可以完成對這些類庫的調用,因此tools.jar應該還有其他的功能。在里面還可以看到有Applet和RMI等相關的文件,因此tools.jar應該還是遠程調用等必須的jar包。tools.jar的其他作用可以查看其他資料。 

 

 PATH環境變量。作用是指定命令搜索路徑,在命令行下面執行命令如javac編譯java程序時,它會到PATH變量所指定的路徑中查找看是否能找到相應的命令程序。我們需要把jdk安裝目錄下的bin目錄增加到現有的PATH變量中,bin目錄中包含經常要用到的可執行文件如javac/java/javadoc等待,設置好PATH變量后,就可以在任何目錄下執行javac/java等工具了。

變量名:Path
變量值:%JAVA_HOME%\bin

 

我們手動編寫一個HelloWorld.java類,然后用javac進行編譯得到HelloWorld.class

我們在Eclipse中新建一個同樣的類然后保存(不點擊執行按鈕)。

保存之后我們到工作目錄下查找會看到對應的bin目錄下已經生成了對應的class文件

為什么會在bin目錄下生成class文件呢?

右鍵項目--》Build Path--》Configure BuildPath... 如下圖所示,編譯輸出路徑可以自己設置

 默認情況下:普通工程:bin,web工程:WEB-INF/classes,maven工程:target/classes

我們把手動編譯的和Eclipse為我們編譯的進行一下對比

 

然后簡單修改一下這個類,保存(仍不執行)

然后再到bin目錄下觀察class文件,發現時間已經被更新了

 為什么我們只是保存了一下就生成了新的class文件?

如上圖所示,我們選擇了自動構建編譯,那么在新建一個類或者對其進行修改的時候Eclipse便會自動為其進行編譯。

如果我們把自動編譯取消,在對這個類修改的時候。

會發現保存之后編譯文件還是舊的,新加的代碼沒有被重新編譯。

那么我們點擊執行看看

會發現執行之后Eclipse重新編譯了java文件

 如果說我們沒有修改Java文件里面的內容,再次執行的話會發現HelloWorld.class並沒有更新(注意看時間),因為還是那個源文件,編譯之后肯定還是一樣的。

java文件沒有改動的話Eclipse是不會重新編譯的。

但是!通過eclipse  --->project  ----->clean... 

這個時候eclipse會將所有的以前編譯信息清除然后編譯。   
選項將工程中的.class文件刪除,同時重新編譯工程。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM