2014-12-18 91 views
-5

爲什麼沒有編譯直接使用.class擴展名直接保存的類不會被JVM執行。是否有任何類型的元數據或其他東西附加到.class文件,然後只有JVM被識別爲有效的.class文件?執行.class文件而不編譯

請幫我澄清提前 感謝

+1

不需要編譯它。 – JClassic

+2

'.class'應該是一個編譯好的文件 –

+0

你的意思是你有一個包含Java源代碼的文件,但是擴展名爲'.class'? –

回答

0

如果你有一個文本文件,它不是一個.class(沒有類加載器只會加載有效的類文件)。嘗試查看現有類的字節碼;你可以用javap -v反編譯它,這樣你就可以看到兩個文件之間的區別.....

+0

是的..我明白了..乾杯 – AmitYadav

0

的.class filrs有特定的格式。沒有理由爲什麼jvm應該執行除此格式以外的其他任何內容,因爲它也被稱爲.class。

+0

和內容!並有具體的內容! – laune

+1

這就是我所說的格式。 –

+0

好的... JVM不會執行它,但這個自制的.class是加載或不加載....如果我將所有的字節代碼複製到其他具有相同名稱的文件然後提供給JVM它將執行或不是? – AmitYadav

1

Java類文件是一個已編譯的中間格式,稱爲bytecode。字節碼由JVM解釋並執行。這不是人類可讀的文本。

如果你需要這個功能,我建議你看看Groovy和Scala(都是JVM託管的語言,並且都可以作爲腳本語言運行)。

+0

好的...... JVM不會執行它,但是這個自制的.class是通過加載器加載的......或者如果我將所有的字節代碼複製到其他文件的同名,然後提交給JVM,它會執行或不是? – AmitYadav

+0

@AmitYadav如果你有一個文本文件,它不是'.class'(並且沒有類加載器只會加載有效的類文件)。嘗試查看現有類的字節碼;你可以反編譯它'javap -v' –

+0

很好,謝謝,我會得到它...乾杯 – AmitYadav