1. IDEA編譯出來的jar文件內部為什麼多了幾個帶$符號的文件
你好,
很高興回答你的問題。
如圖出現帶有$符號的文件的原因是因為在類a的內部定義了類1,2,3,4(內部類)。
結構大致是這樣:
class a{
class 1{}
class 2{}
class 3{}
class 4{}
}
如果有幫助到你,請點擊採納。
我解答的大部分是軟體開發新人遇到的問題,如果有興趣可以關注我。
2. 【JarEditor】可直接修改jar包的IDEA插件
在進行代碼開發和維護過程中,常常會遇到需要直接修改jar文件內部類的問題,傳統的做法是先解壓jar文件,再反編譯class文件,修改後再重新編譯和打包。這一系列操作繁瑣且容易出錯,耗費大量時間和精力。
然而,市面上並沒有滿足直接編輯jar文件的IDEA插件,這促使我著手編寫一個名為JarEditor的插件,以實現無需解壓即可編輯jar包內部類的功能。
JarEditor插件的使用流程簡便高效。首先,IDEA自帶的反編譯插件可以打開jar文件,並展示反編譯後的類代碼。隨後,通過在插件市場安裝JarEditor,用戶可以訪問插件提供的Jar Editor功能區,直接在反編譯的代碼上進行修改。
修改完成後,用戶只需點擊「Save/Compile」按鈕,系統將自動編譯修改的java內容,並保存到修改的類文件中。接著,通過點擊「Build Jar」按鈕,系統將把修改後的類文件寫入到原始jar包中,實現一氣呵成的編輯過程,無需再進行復雜的解壓和打包操作。
不僅如此,JarEditor還支持修改jar包內的資源文件。用戶只需按照相同的流程操作,即可完成資源文件的編輯和更新。在查看jar包工程展示圖時,用戶可以通過右鍵任意文件,選擇「New」或「Delete」操作,輕松新增或刪除文件。
總結而言,JarEditor插件大大簡化了編輯jar文件的過程,提高了開發效率。用戶只需安裝插件,並遵循簡單操作步驟,即可實現直接在jar文件中進行代碼修改,節省了大量時間,減少了出錯幾率。感興趣的開發者可以嘗試使用,源碼地址在GitHub上可供參考。支持IDEA最低版本為2020.3,兼容更高級別版本。
歡迎廣大開發者交流反饋,共同提升開發體驗。
3. java編譯中出現了Exception in thread 「main" java.lang.UnsupportedClassVersionError
這個問題是由較高版本的JDK編譯的java class文件試圖在較低版本的JVM上運行產生的錯誤。
1、解決措施就是保證jvm(java命令)和jdk(javac命令)版本一致。如果是linux版本,則在命令行中分別輸入java -version和javac -version命令來查看版本是否一致。這里假設都是1.7版本。
2、如果都一致,但還是解決不了問題,那麼你肯定不是直接在命令行中用javac來編譯的,而是用類似於eclipse、netbeans這樣的編譯器來編譯的。因為很多編譯器都自帶javac,而不是採用操作系統中的編譯器。如果你的編譯器是eclipse的話,那麼需要在項目的屬性里設置jdk版本,方法是右擊項目-->properties-->java compiler --> Enable project specific settings -->將compiler compliance level設置為1.7,也就是與jvm一致的版本(在命令行中java -version所顯示的版本)。
3、綜上,如果你是用編譯器來編譯的話,請首先確保編譯器自帶的jdk版本是否和操作系統中的java版本一致。一般是jdk和jvm版本不一致導致,可以在cmd命令下輸入java -version和javac -version看版本是否一致,不一致的話需要改JAVA_HOME保證一致。
拓展資料:
Java 異常處理
異常是程序中的一些錯誤,但並不是所有的錯誤都是異常,並且錯誤有時候是可以避免的。異常發生的原因有很多,通常包含以下幾大類:
1、用戶輸入了非法數據。
2、要打開的文件不存在。
3、網路通信時連接中斷,或者JVM內存溢出。
這些異常有的是因為用戶錯誤引起,有的是程序錯誤引起的,還有其它一些是因為物理錯誤引起的。要理解Java異常處理是如何工作的,你需要掌握以下三種類型的異常:
1、檢查性異常:最具代表的檢查性異常是用戶錯誤或問題引起的異常,這是程序員無法預見的。例如要打開一個不存在文件時,一個異常就發生了,這些異常在編譯時不能被簡單地忽略。
2、運行時異常:運行時異常是可能被程序員避免的異常。與檢查性異常相反,運行時異常可以在編譯時被忽略。
3、錯誤:錯誤不是異常,而是脫離程序員控制的問題。錯誤在代碼中通常被忽略。例如,當棧溢出時,一個錯誤就發生了,它們在編譯也檢查不到的。