在編譯或使用java命令(例如:javac,java)時,系統將如何使用特定的Java在環境變量中設置的路徑?程序背後的系統如何從環境變量中採取特定的路徑(在使用java命令時)
我知道這需要我瞭解環境變量。我只想知道系統將如何運作。任何人都可以解釋它背後的過程嗎?
在編譯或使用java命令(例如:javac,java)時,系統將如何使用特定的Java在環境變量中設置的路徑?程序背後的系統如何從環境變量中採取特定的路徑(在使用java命令時)
我知道這需要我瞭解環境變量。我只想知道系統將如何運作。任何人都可以解釋它背後的過程嗎?
CLASSPATH
環境變量可用於定義java
和javac
(和其他JDK工具)的類路徑指令。你可以這樣做在類Unix系統下(例如Linux):
export CLASSPATH=/home/user/path/to/dir1:/home/user/path/to/dir2:/opt/other-dir
然後,當你執行java
或javac
,具有環境變量的值就增加一個-classpath
關鍵的作用,例如
javac Test.java
會以同樣的方式工作,正如下面的命令將不定義任何環境變量工作:
javac -classpath /home/user/path/to/dir1:/home/user/path/to/dir2:/opt/other-dir Test.java
更多信息:https://docs.oracle.com/javase/tutorial/essential/environment/paths.html
如何從Java OS讀取這個屬性
源可以在這裏找到:http://hg.openjdk.java.net/jdk8/jdk8/jdk/file/687fd7c7986d/src/share/bin/java.c
cpath = getenv("CLASSPATH");
他們使用getenv()
功能從C庫:https://www.tutorialspoint.com/c_standard_library/c_function_getenv.htm
嘿,我知道如何添加以及爲什麼添加。我只需要知道系統如何走這條路的後端程序。任何方式只是知道這個過程? –
請詳細說明您感興趣的'後端進程'是什麼。您是否需要知道該操作系統的javac如何讀取該環境變量?或者您需要知道javac如何掃描classpath以查找類? –
嗨羅馬, 感謝您的回覆。是的,我想知道javac如何從操作系統中讀取數據。 –