IntelliJ IDEA引入第三方jar包或查看Java源碼的時候報decompiled.class file bytecode version:52.0(java 8)錯誤的解決辦法
引入第三方jar包或者查看Java源碼的時候,經(jīng)常遇到問題如下:
decompiled.class file bytecode version:52.0(java 8) ,open source file.
翻譯一下上面的意思:(反編譯 .class文件中的字節(jié)碼 到Java 8 版本) 打開源文件
其實這個時候,你就得注意一下,你看到文件是 .class文件,還是 .java文件。
然后我就詳細的總結(jié)了一下,二者的差別:
1.先是理論知識:
- .java為Java的源文件后綴,編寫的代碼需要寫在.java文件中。
- 而.class是字節(jié)碼文件,是.java源文件通過javac命令編譯后生成的文件。
- Java虛擬機就是去運行.class文件從而實現(xiàn)程序的運行。
- jdk自帶 .class 文件,在運行的時候,沒必要每次都去把 .java 文件再編譯一遍成 .class文件,去運行。
- 也是為了加快代碼執(zhí)行速度。
2.具體的 .class文件和 .java文件的具體對比圖,如下:
這個.java文件和我們自己寫的.java文件一樣,是可以打開看內(nèi)容的。下面的jar里面的源碼就打不開啦。
再看如下的2張圖。繼續(xù)理解一下上面的意思。
注意
- 現(xiàn)在看到的是.class文件,我們知道自己的寫的.java文件會經(jīng)過編譯器編譯然后變成.class文件,然后才可以運行的。
- 這可以看到.class文件內(nèi)部的代碼,估計都是編譯器的功勞。但是可惜的是,丁點兒注釋都沒有。
- 我記得eclipse里面這個時候,好像就是直接彈框讓你打開源文件來著。
注意
- 現(xiàn)在看到的是.java文件,和我們平時寫的Java文件是一樣樣的。就是直接打開那個xxx-sources.jar的結(jié)果。里面注釋啥的都有。
- 這2個圖對比,就可以發(fā)現(xiàn)。一般jar包是有2個類型的。結(jié)尾帶-sources的和不帶的。二者的差別,就如上所描述的。
總結(jié)
以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學習或者工作具有一定的參考學習價值,謝謝大家對腳本之家的支持。如果你想了解更多相關(guān)內(nèi)容請查看下面相關(guān)鏈接
相關(guān)文章
深入分析Spring BeanDefinition的構(gòu)造元信息
Bean Definition是一個包含Bean元數(shù)據(jù)的對象,它描述了如何創(chuàng)建Bean實例、Bean屬性的值以及Bean之間的依賴關(guān)系,本文將帶大家深入分析Spring BeanDefinition的構(gòu)造元信息,需要的朋友可以參考下2024-01-01Mybatis框架之代理模式(Proxy Pattern)的實現(xiàn)
本文主要介紹了MyBatis框架中使用代理模式ProxyPattern的原理和實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2024-11-11Java Base64算法實際應用之郵件發(fā)送實例分析
這篇文章主要介紹了Java Base64算法實際應用之郵件發(fā)送,結(jié)合實例形式分析了java字符編碼與郵件發(fā)送相關(guān)操作技巧,需要的朋友可以參考下2019-09-09Springboot mybatisplus如何解決分頁組件IPage失效問題
這篇文章主要介紹了Springboot mybatisplus如何解決分頁組件IPage失效問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-08-08Java Swing窗體關(guān)閉事件的調(diào)用關(guān)系
這篇文章主要為大家詳細介紹了Java Swing窗體關(guān)閉事件的調(diào)用關(guān)系,具有一定的參考價值,感興趣的小伙伴們可以參考一下2019-07-07