java環境變數對編譯java程式的影響

來源:互聯網
上載者:User

java環境變數對編譯java程式的影響

 

JAVA_HOME=/opt/java/jdk1.6.0_13
CLASSPATH=.:$JAVA_HOME/lib:$JAVA_HOME/jre/lib
PATH=.:$PATH:$JAVA_HOME/bin:$JAVA_HOME/jre/bin

環境變數CLASSPATH與開發java程式密切相關,
在使用javac編譯java程式時,編譯器會在CLASSPATH設定的路徑中尋找相關類,
例如 CLASSPATH中配置了.,即目前的目錄,編譯器會從目前的目錄中尋找相應類,
例如以下例子:

[root@localhost PerfAnalyzer]# ls test/javaTest/
DataCollector.class  javaTest.jar  Test.class
DataCollector.java   manifest.mf   Test.java

若環境變了CLASSPATH中沒有配置.,則編譯時間會出現如下錯誤,這是因為此時編譯起不會 從目前的目錄中尋找DataCollector,
而配置了.則編譯正常:

test java : execute ./test/javaTest/Test.java
Test.java:23: 找不到符號
符號: 類 DataCollector
位置: 類 Test
    DataCollector collector=new DataCollector();

此外,注意環境變數CLASSPATH應該配置到相關包的最底層路徑,
例如:
***/lib下有很多*.jar包,如果把classpath配置在***/lib目錄層級,編譯器是不會自動在lib目錄下的jar包中尋找類的,它只會在lib目錄下尋找*.java。此時必須將所有jar包的絕對路徑一一附加到CLASSPATH上,這樣編譯器會自動解析jar包,在其中尋找相關類

但是對於Jdk本身的庫檔案jar,在$JAVA_HOME/lib下,主要是tools.jar和dt.jar
[root@localhost lib]# ls *.jar
dt.jar  htmlconverter.jar  jconsole.jar  sa-jdi.jar  tools.jar

似乎不需要指向jar的絕對路徑

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.