关于.java编译成.class 与 .class反编译成.java问题

 

了解下这两个文件类型

  • .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文件,但是不一定编译成功。

以上为个人经验,希望能给大家一个参考,也希望大家多多支持编程宝库

 递归出现栈溢出stackoverflow递归是个不断回调方法的过程,使方法一遍遍的压入栈中,递归次数多了,栈满了也就溢出了。默认的栈大小是1m。我也没有很好的解决办法,就加大 ...