.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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 电信系统服务器地址,电信高速dns服务器地址谁知道?

    电信系统服务器地址,电信高速dns服务器地址谁知道?丶言小午回答数:25336|被采纳数:62016-11-2200:56:35全国各地电信DNS北京DNS地址:202.96.199.133202.96.0.133202.106.0.20202.106.148.1202.97.16.195上海DNS地址:202.96.199.132202.96.199.133202.96.209.5202.96.209.6202.96.209.133天津…

    2022年7月27日
    15
  • 自动化测试平台(八):列表组件公共化封装和用例项目管理功能开发

    自动化测试平台(八):列表组件公共化封装和用例项目管理功能开发上一章我们完成了整个用户管理模块的功能,能够正确的增、删、改、查用户。但其中有很多判断实际上是其他类似的模块也会有的,例如:1.创建用户后回到首页刷新列表;2.删除次页最后一条数据,回到前一页刷新列表;3.查询条件的格式化;—难道我们每写一个类似的模块,都要去写一遍这些重复的逻辑代码吗?显然是没必要的,所以我们需要将其抽离成公共列表组件提供给其他模块使用,避免大量的做重复的事情,并让代码更容易维护。本章还将完成用例项目管理功能,它主要用于管理不同类型(API、UI),不同项目

    2022年6月25日
    22
  • Okio—— 更加高效易用的IO库

    Okio—— 更加高效易用的IO库在OkHttp的源码中经常能看到Okio的身影,所以单独拿出来分析一下,作为作为OkHttp的低层IO库,Okio确实比传统的java输入输出流读写更加方便高效。

    2022年6月12日
    63
  • 带你重新认识ZooKeeper!云浮java培训班

    带你重新认识ZooKeeper!云浮java培训班1关于MySQL,面试官会问哪些问题?第一个:MySQ性能优化最佳实践21个(有具体的解释)你知道哪些?为查询缓存优化你的查询EXPLAIN你的SELECT查询当只要一行数据时使用LIMIT1为搜索字段建索引在Join表的时候使用相当类型的例,并将其索引千万不要ORDERBYRAND()避免SELECT*永远为每张表设置一个ID使用ENUM而不是VARCHAR从PROCEDUREANALYSE()取得建议尽可能

    2022年7月9日
    23
  • 强制删除文件 强制删除文件夹

    强制删除文件 强制删除文件夹
    在桌面新建一个txt文本打开这个txt文本,输入下面两行内容:
    del/f/s/q//?/%1
    rd /s/q//?/%1
    然后文件->另存为
    重新命名文件名为del.bat,并选择文件类型为“所以文件”,最后保存文件 
    一定要记着文件的位置了把要删除的文件拖到这个批处理del.bat上文件就静悄悄的删除了^-^

    2022年5月30日
    33
  • ubuntu删除route_linux下route add route del 用法

    ubuntu删除route_linux下route add route del 用法显示现在所有路由#routeroot@ubuntu:~#routeKernelIProutingtableDestinationGatewayGenmaskFlagsMetricRefUseIface10.147.9.0*255.255.255.0U…

    2022年8月12日
    8

发表回复

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

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