如果Java源文件是依賴於外部JAR文件,我們需要提供外部依賴性的給Java編譯器的路徑:爲什麼javac(編譯器)和java(JVM)都需要提及類路徑中的外部依賴關係?
javac -cp [path-to-external-JAR] foo.java
jar cvf foo.jar foo.class
同樣,當我們需要執行這個jar文件,我們需要提供外部依賴的路徑JVM:
java -cp [path-to-external-JAR]:foo.jar foo
如果Java源文件是依賴於外部JAR文件,我們需要提供外部依賴性的給Java編譯器的路徑:爲什麼javac(編譯器)和java(JVM)都需要提及類路徑中的外部依賴關係?
javac -cp [path-to-external-JAR] foo.java
jar cvf foo.jar foo.class
同樣,當我們需要執行這個jar文件,我們需要提供外部依賴的路徑JVM:
java -cp [path-to-external-JAR]:foo.jar foo
編譯器需要參考,因爲它有檢查的類和方法你打電話或壓倒一切的存在,可以被稱爲/覆蓋。
JVM需要它們,因爲它必須執行這些類和方法內的指令。
很明顯,java(vm)需要運行類定義。 javac的需要類聲明爲類型信息...
要處理其所操作的源代碼,的javac和javadoc必須 獲得在源代碼中使用的對象類型信息。
否則有endup搜索你的整個文件系統爲您的應用程序使用的外部類。
因此,如果我編譯後將外部依賴項移動到新位置,並使用JVM的新路徑,是否會產生問題? – 2013-02-09 13:27:44
不需要。類需要位於類路徑中,就這些了。 – 2013-02-09 13:28:56
@BharatKhatri這是這些論點的重點。 – Amareswar 2013-02-09 14:42:22