java class怎樣編譯成jar jar是否都能被輕易的反編譯?
jar是否都能被輕易的反編譯?最近寫仿真作業(yè),教授給發(fā)了jar格式的工具類,因?yàn)榉N種原因想看源碼,就給扔到網(wǎng)上隨便一個(gè)decompile,結(jié)果秒出結(jié)果,連注釋都一個(gè)字不差。所以現(xiàn)在jar都可以那么輕松
jar是否都能被輕易的反編譯?
最近寫仿真作業(yè),教授給發(fā)了jar格式的工具類,因?yàn)榉N種原因想看源碼,就給扔到網(wǎng)上隨便一個(gè)decompile,結(jié)果秒出結(jié)果,連注釋都一個(gè)字不差。所以現(xiàn)在jar都可以那么輕松被反編譯出來(lái)嗎?
首先可以明確告知你的是:jar文件都是可以被反編譯的,但并不意味著所有的jar文件都很容易的被反編譯!
jar文件是一種特殊的壓縮文件jar文件其實(shí)是Java歸檔文件,是一種軟件包,用來(lái)作為Java項(xiàng)目打包產(chǎn)物或者開發(fā)類庫(kù)。雖說(shuō)后綴是jar,但其實(shí)是以Zip來(lái)壓縮的,所以我們可以直接將jar文件用解壓工具解壓,解壓后的就是一些class文件和配置文件。
而class文件是可以被反編譯的,有很多現(xiàn)成的工具,比如:jd-gui等。
避免jar文件被輕易反編譯則需要進(jìn)行代碼混淆如果我們要避免他人輕易反編譯jar文件,那在打包為jar文件前就對(duì)代碼進(jìn)行混淆處理,這樣即使反編譯后可讀性很低!
以上就是我的觀點(diǎn),對(duì)于這個(gè)問(wèn)題大家是怎么看待的呢?歡迎在下方評(píng)論區(qū)交流 ~ 我是科技領(lǐng)域創(chuàng)作者,十年互聯(lián)網(wǎng)從業(yè)經(jīng)驗(yàn),歡迎關(guān)注我了解更多科技知識(shí)!
在Eclipse工具中怎么直接閱讀jar包中的.class文件?
無(wú)法直接閱讀的
但是有兩種方法可以看源代碼
如果是jar包中的.class可以去網(wǎng)上查找該jar包的源碼,但是有些不是常用jar包的源碼很不好找
還有就是下載個(gè)反編譯工具 將.class再反編譯成.java
java構(gòu)造方法?
JAVA的構(gòu)造函數(shù)是:SetLocal EnableDelayedExpansionset %%c in (lib*.jar) do set classpath!classpath!%%cset classpath%classpath%./classesjava 。
1、無(wú)參構(gòu)造方法無(wú)參構(gòu)造方法又分為隱式無(wú)參構(gòu)造方法和顯示無(wú)參構(gòu)造方法。隱式無(wú)參構(gòu)造方法在定義類的時(shí)候,如果沒有給類定義一個(gè)構(gòu)造方法,Java編譯器在編譯時(shí)會(huì)默認(rèn)提供一個(gè)隱式的構(gòu)造方法,它沒有任何參數(shù),并且有一個(gè)空的方法體。例如,Person類中隱含一個(gè)無(wú)參構(gòu)造方法,在main方法中可以通過(guò)new關(guān)鍵字來(lái)調(diào)用此默認(rèn)的構(gòu)造方法,代碼如下:
2、顯式無(wú)參構(gòu)造方法隱式無(wú)參構(gòu)造方法是由系統(tǒng)提供的,無(wú)法修改其內(nèi)容。但有時(shí)需要在調(diào)用這個(gè)構(gòu)造方法時(shí)初始化類成員屬性或執(zhí)行一些操作,要實(shí)現(xiàn)這個(gè)需求,就需要為它定義一個(gè)顯式無(wú)參數(shù)構(gòu)造器,修改上面的代碼如下:3。顯示參數(shù)構(gòu)造函數(shù)和初始化對(duì)象是constructor的功能,所以有時(shí)候需要傳入一些參數(shù)給這個(gè)方法,定義一個(gè)顯示的參數(shù)構(gòu)造函數(shù)。例如: