.java编译成.class 与 .class反编译成.java

.java编译成.class 与 .class反编译成.java.java编译成.class 与 .class反编译成.java

大家好,又见面了,我是你们的朋友全栈君。

了解下这两个文件类型:.java文件是给人看的,.class是给计算机看的。程序员编写的是.java文件,经编译后生成.class文件给计算执行。

相信这两句话很形象的说明了这两个文件的关系了。

1,首先反编译器就是jd-gui这个软件了,可以把jar包直接拖进这个软件就能够看到代码了。当然jd-gui不能编译.class文件。

2,怎么把.class转成.java文件呢?也是在jd-gui文件里面。点击要转的文件,然后file–>save Source,如下图:

.java编译成.class 与 .class反编译成.java

保存后就是.java文件了。当然可以直接保存整个jar包,也可以是单个文件。

3,eclipse里面怎么看.class文件?新建的一个.java文件有.class的前提是要编译成功,比我常用的项目是maven工程,要先maven install编译才能生成“完整的”.class文件,单单保存是不行的,这里下面会有说明。eclipse可以通过ctrl+shift+R,然后输入类名,可同时看到.class和.java文件。

.java编译成.class 与 .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文件了。如图:

.java编译成.class 与 .class反编译成.java

.java编译成.class 与 .class反编译成.java

这里对3解说下,编译单个文件的时候,如果这个类引入的有其他新建的类,就会编译报错,显示找不到符号,这个也很容易理解,因为实在javac虚拟机上执行的,我们写的测试类内容只能包含jdk自带的代码,对于我们引入自己新建类肯定是不识别的。也就是在eclipse中虽然保存后有.class文件,但是不一定编译成功。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/106105.html原文链接:https://javaforall.net

(0)
上一篇 2022年4月23日 下午8:00
下一篇 2022年4月23日 下午8:00


相关推荐

  • Parcelable实战

    Parcelable实战Android 开发过程中 无法将对象的引用传给 Activities 或者 Fragments 我们需要将这些对象放到一个 Intent 或者 Bundle 里面 然后再传递 这就需要用到序列化和反序列化 序列化分类 Parcelable 原理 Parcelable 使用回调接口传递注意事项序列化分类 Serializable 是 java 的序列化技术 使用简单 频繁的 IO 操作 效率低 P

    2026年3月16日
    1
  • margin的使用方法与技巧

    1.margin还可以用来做平移,作用类似translate哈哈。将元素设成absolute后就可以用margin随便平移他了,既不像relative那样要霸占空间,又不用为父元素设置relative

    2021年12月20日
    56
  • 条码系统工单导入到K3产品入库

    条码系统工单导入到K3产品入库

    2021年9月5日
    70
  • web.xml配置contextConfigLocation[通俗易懂]

    web.xml配置contextConfigLocation[通俗易懂]web.xml中classpath:和classpath*:  有什么区别? classpath:只会到你的class路径中查找找文件; classpath*:不仅包含class路径,还包括jar文件中(class路径)进行查找. 有时候会用模糊匹配的方式配置多配置文件。但是如果配置文件是在jar包里,模糊匹配就找不到了。可以用逗号隔开的方式配置多个配置文件

    2022年7月14日
    19
  • linux下kegg注释软件,科学网—生物信息——kegg分析的kobas软件的安装与使用 – 孙朋川的博文…

    linux下kegg注释软件,科学网—生物信息——kegg分析的kobas软件的安装与使用 – 孙朋川的博文…关于 kegg 的 ko 和 K 的分析 本以为可以通过 interproscan 来获取 谁知跑出来的结果只涉及新陈代谢 不能使用 最终还是使用北大开发的 kobas 做的 kegg 分析 关于 kobas 的简介 这里有网址 http kobas cbi pku edu cn help do 这个网址支持在线分析 不过对于 gene 数目大于 500 的 就不支持了 需要后台运行 kobas 当然 他们的服务器是可以外租的

    2026年3月17日
    2
  • Python学习【第五篇】循环语句「建议收藏」

    Python学习【第五篇】循环语句「建议收藏」Python循环语句接下来将介绍Python的循环语句,程序在一般情况下是按顺序执行的。编程语言提供了各种控制结构,允许更复杂的执行路径。循环语句允许我们执行一个语句或语句组多次。Python

    2022年7月5日
    18

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号