簡體   English   中英

Java類動態加載過程

[英]Java class dynamic loading process

我正在和我的教授爭論,我似乎無法在google中找到答案。我的問題是,當我使用另一個類中的方法時,JVM會嘗試找到該類的.class文件嗎? 參數是這樣的:如果未找到.class文件,將搜索源文件,如果找到該文件,將對其進行重新編譯或將引發異常? 謝謝!

更新:我改掉了這個問題,非常感謝您的幫助!

它根本不是標准行為,並且在正常環境下將無法運行。

但是,我聽說一些商業應用服務器發行版可以做到這一點...有人告訴我有關在開發模式下配置的較舊的weblogic版本,但也許只是城市傳說:P

我猜您可以編寫一個調優的類加載器,該類加載器在類路徑中查找.java文件,並且鑒於它在具有Java編譯器的JDK上運行,請按照您說的做。

標准JRE甚至不包含Java源代碼的編譯器。 要編譯Java源代碼,您需要一個JDK或一個包含自己的Java編譯器的IDE。 如果使用javac或IDE的內置編譯器編譯源代碼,則這些編譯器將搜索所引用類的源文件,並在未找到.class文件或源文件比類文件新的情況下進行編譯。 但是,如果您隨后刪除了所引用類的類文件並運行程序,則JVM將不會搜索源文件。 它將拋出NoClassDefFoundError

JVM不會在我們試圖調用其方法的類中搜索源文件。 JVM將引發類似以下的異常:

    Exception in thread "main" java.lang.Error: Unresolved compilation problems: 
    Employee cannot be resolved to a type
    Employee cannot be resolved to a type
    at com.test.TestIt.main(TestIt.java:7)

Employee是我們要調用其方法的類(未為Employee創建.class文件)

暫無
暫無

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

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