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

 更新时间:2022年09月29日 09:32:53   作者:小爷欣欣  
这篇文章主要介绍了关于.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文件,但是不一定编译成功。

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • SpringBoot实现发送邮件、发送微信公众号推送功能

    SpringBoot实现发送邮件、发送微信公众号推送功能

    这篇文章主要介绍了SpringBoot实现发送邮件、发送微信公众号推送功能,这里对成员变量JavaMailSender使用了@Resource注解,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-03-03
  • 使用@Autowired注解警告Field injection is not recommended的解决

    使用@Autowired注解警告Field injection is not recommended的解决

    这篇文章主要介绍了使用@Autowired注解警告Field injection is not recommended的解决,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-04-04
  • Java中的密码加密方式

    Java中的密码加密方式

    文章介绍了Java中使用MD5算法对密码进行加密的方法,以及如何通过加盐和多重加密来提高密码的安全性,MD5是一种不可逆的哈希算法,适合用于存储密码,因为其输出的摘要长度固定,且不容易发生碰撞,此外,通过加盐和多重加密,可以进一步增加密码的复杂性和安全性
    2025-01-01
  • Java基础学习之实参和形参

    Java基础学习之实参和形参

    这篇文章主要介绍了Java基础学习之实参形参,文中有非常详细的代码示例,对正在学习java基础的小伙伴们有一定的帮助,需要的朋友可以参考下
    2021-05-05
  • java时间和字符串之间相互转换几种方法

    java时间和字符串之间相互转换几种方法

    这篇文章主要介绍了java时间和字符串之间相互转换的几种方法,还详细解释了DateTimeFormatter的三种解析模式,并比较了yyyy和uuuu在严格模式下的区别,需要的朋友可以参考下
    2025-03-03
  • java解析任意层数json字符串的方法

    java解析任意层数json字符串的方法

    一个方法解析任意层数的json字符窜:使用正则表达式,递归算法,将jsonArray解析出后添加到List, JsonObject添加至Map
    2014-02-02
  • SpringBoot如何配置MySQL和Oracl双数据源(Mybatis)

    SpringBoot如何配置MySQL和Oracl双数据源(Mybatis)

    这篇文章主要介绍了SpringBoot如何配置MySQL和Oracl双数据源(Mybatis)问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-03-03
  • 一招教你使用Java执行groovy脚本的两种方式

    一招教你使用Java执行groovy脚本的两种方式

    本文主要介绍了一招教你使用Java执行groovy脚本的两种方式,一种是通过脚本引擎ScriptEngine提供的eval(String)方法执行脚本内容,一种是执行groovy脚本,感兴趣的可以了解一下
    2023-09-09
  • Netty分布式server启动流程Nio创建源码分析

    Netty分布式server启动流程Nio创建源码分析

    这篇文章主要介绍了Netty分布式server启动流程Nio创建源码分析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-03-03
  • Java Socket编程(二) Java面向连接的类

    Java Socket编程(二) Java面向连接的类

    Java Socket编程(二) Java面向连接的类...
    2006-12-12

最新评论