反编译class
了解下这两个文件类型:.java文件是给人看的,.class是给计算机看的。程序员编写的是.java文件,经编译后生成.class文件给计算执行。
相信这两句话很形象的说明了这两个文件的关系了。
1,首先反编译器就是jd-gui这个软件了,可以把jar包直接拖进这个软件就能够看到代码了。当然jd-gui不能编译.class文件。
2,怎么把.class转成.java文件呢?也是在jd-gui文件里面。点击要转的文件,然后file-->save Source,如下图:
保存后就是.java文件了。当然可以直接保存整个jar包,也可以是单个文件。
3,Eclipse里面怎么看.class文件?新建的一个.java文件有.class的前提是要编译成功,比我常用的项目是maven工程,要先maven install编译才能生成“完整的”.class文件,单单保存是不行的,这里下面会有说明。eclipse可以通过ctrl+shift+R,然后输入类名,可同时看到.class和.java文件。
4,怎么编译单个的java文件呢?方法有很多,这里我介绍个在dos命令中生成.class文件的办法。
首先在eclipse中新建个aa.java类,里面就啥都不写了,最好也别带汉字,不然后面编译的时候会报编码错误,找不到符合等各种错误。然后拷到桌面上,打开dos命令,输入以下命令:
E:\jdk1.7\bin\javac.exe C:\Users\AdMinistrator\Desktop\aa.java
解释:E:\jdk1.7\bin\javac.exe 是javac.exe的安装目录,其实找到jdk就行了。C:\Users\Administrator\Desktop\aa.java是刚才写的测试类,把他拷到桌面的位置。
最后Enter运行命令,运行成功的话就是可以再aa的目录下生成同名的.class文件了。如图:
这里对3解说下,编译单个文件的时候,如果这个类引入的有其他新建的类,就会编译报错,显示找不到符号,这个也很容易理解,因为实在javac虚拟机上执行的,我们写的测试类内容只能包含jdk自带的代码,对于我们引入自己新建类肯定是不识别的。也就是在eclipse中虽然保存后有.class文件,但是不一定编译成功。
相关阅读
摘要: 本文首先概述了单例模式产生动机,揭示了单例模式的本质和应用场景。紧接着,我们给出了单例模式在单线程环境下的两种经典实现
日期HH-mm-ss(时-分-秒)为24小时制日期hh-mm-ss(时-分-秒)为12小时制Date dNow = new Date( ); SimpleDateFormat dateFormat = new S
关于导致java.lang.InstantiationException异常的原因
这个异常多半是由于通过反射在实例化的时候,对应的类里面覆盖了无参构造而导致无法实例化,由于创建类的时候,默认有一个无参构造,前提
最近在学习OSGi,想着顺便把java系统地学一下吧。 哪知道环境配置好,第一次code,就报错了。。。在这里记录一下解决方法吧,目前在网上
jib Official:GoogleContainerTools/jib 本文示例完整demo github地址 https://github.com/moxingwang/jib 想要了解并