簡體   English   中英

為什么Java在運行時需要classpath

[英]Why Java needs classpath at runtime

在Java中,我們在編譯時設置類路徑以編譯Java文件,但是為什么我們需要在運行時設置類路徑? JVM為什么需要classpath來運行.class文件的任何特定原因?

類路徑上的文件提供了JVM需要運行的實際可執行代碼(在Java .class文件中)。

在Java中,我們在編譯時設置類路徑以編譯Java文件

我們要不要? 我不。

但是為什么我們需要在運行時設置類路徑?

因此,JVM知道可以在哪里找到這些類。

我看到的原因之一是,如果出於某種原因需要將應用程序所需的庫分散在多個安裝點/驅動器/分區甚至文件夾中,則無法向JVM指定代碼所在的位置。 作為一種解決方法,JVM可以遍歷整個文件系統和索引內容,但是效率/速度如何?

干杯

通常,人們認為編譯不需要獨立就可以創建獨立的應用程序。 但事實並非如此。

如果您的代碼沒有依賴項,則無需設置類路徑。

您可能需要/想要在運行時包含-cp:

  1. 要指定您的類在運行時需要在哪里尋找第三方和用戶定義的文件(* .jar,*。class,*。properties等)。

  2. 覆蓋CLASSPATH環境變量所設置的內容。

CLASSPATH是Java虛擬機用於查找類文件(包括主類)的環境變量。

或者,您可以將-cp-class-path作為參數傳遞給JVM,以指定主類所依賴的類路徑。

例如,

export CLASSPATH=/opt/javatv:/opt/mhp:/opt/main-class;
java MainClass

(要么)

java -cp /opt/javatv;/opt/mhp;/opt/main-class MainClass;

(要么)

java -class-path /opt/javatv;/opt/mhp;/opt/main-class MainClass;

暫無
暫無

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

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