簡體   English   中英

為什么javac(編譯器)和java(JVM)都需要在類路徑中提及外部依賴?

[英]Why do both javac (compiler) and java (JVM) need a mention of external dependencies in the classpath?

如果java源文件依賴於外部JAR文件,我們需要為java編譯器提供外部依賴的路徑:

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必須獲取有關源代碼中使用的對象類型的信息。

參考 - Oracle文檔

否則它必須最終在整個文件系統中搜索您在應用程序中使用的外部類。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM