重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
Java代码的编译与反编译
城子河ssl适用于网站、小程序/APP、API接口等需要进行数据传输应用场景,ssl证书未来市场广阔!成为创新互联建站的ssl证书销售渠道,可以享受市场价格4-6折优惠!如果有意向欢迎电话联系或者加微信:13518219792(备注:SSL证书合作)期待与您的合作!
2017-02-21Hollis数盟
一、什么是编译
1、利用编译程序从源语言编写的源程序产生目标程序的过程。
2、用编译程序产生目标程序的动作。编译就是把高级语言变成计算机可以识别的2进制语言,计算机只认识1和0,编译程序把人们熟悉的语言换成2进制的。编译程序把一个源程序翻译成目标程序的工作过程分为五个阶段:词法分析;语法分析;语义检查和中间代码生成;代码优化;目标代码生成。主要是进行词法分析和语法分析,又称为源程序分析,分析过程中发现有语法错误,给出提示信息。
二、什么是反编译
计算机软件反向工程(Reverseengineering)也称为计算机软件还原工程,是指通过对他人软件的目标程序(可执行程序)进行“逆向分析、研究”工作,以推导出他人的软件产品所使用的思路、原理、结构、算法、处理过程、运行方法等设计要素,某些特定情况下可能推导出源代码。反编译作为自己开发软件时的参考,或者直接用于自己的软件产品中。
三、Java类的编译与反编译
我们在最初学习Java的时候,会接触到两个命令:javac和java,那个时候我们就知道,javac是用来编译Java类的,就是将我们写好的helloworld.java文件编译成helloworld.class文件。
class文件打破了C或者C++等语言所遵循的传统,使用这些传统语言写的程序通常首先被编译,然后被连接成单独的、专门支持特定硬件平台和操作系统的二进制文件。通常情况下,一个平台上的二进制可执行文件不能在其他平台上工作。而Javaclass文件是可以运行在任何支持Java虚拟机的硬件平台和操作系统上的二进制文件。
那么反编译呢,就是通过helloworld.class文件得到java文件(或者说是程序员能看懂的Java文件)
四、什么时候会用到反编译
1、我们只有一个类的class文件,但是我们又看不懂Java的class文件,那么我们可以把它反编译成我们可以看得懂的文件。
2、学习Java过程中,JDK的每个版本都会加入越来越多的语法糖,有些时候我们想知道Java一些实现细节,我们可以借助反编译。
五、反编译工具
1、javap
2、Jad:官网(墙裂推荐)
客户端:
可以在官网下载可执行文件,找到对应的操作系统的对应版本,然后进行安装使用。
因为我使用的是linux操作系统,所以我下载的是Linux版本的工具,这个工具下载好之后会有一个执行文件,只要在执行文件所在目录执行./jadhelloworld.class就会在当前目录下生成helloworld.jad文件,该文件里就是我们很熟悉的Java代码
Eclipse插件:
下载地址在官网下载插件的jar包,然后将jar包放到eclipse的plugins目录下‘在打开Eclipse,Eclipse-Window-Preferences-Java,此时你会发现会比原来多了一个JadClipse的选项,单击,在Pathtodecompiler中输入你刚才放置jad.exe的位置,也可以制定临时文件的目录。当然在JadClipse下还有一些子选项,如Debug,Directives等,按照默认配置即可。基本配置完毕后,我们可以查看一下class文件的默认打开方式,Eclipse-Window-Preferences-General-Editors-FileAssociations我们可以看到class文件的打开方式有两个,JadClipse和Eclipse自带的ClassFileViewer,而JadClipse是默认的。全部配置完成,下面我们可以查看源码了,选择需要查看的类,按F3即可查看源码
编程错误解决方法
Java入门基础第4天《Java编程规范及编译源代码常见错误的解决方法》

爱笑的陈sir
原创
关注
10点赞·484人阅读
大家傍晚好呀!通过学习Java入门基础第3天我们了解了怎么用记事本编写运行Java程序,但是这两天我收到了很多大家的一部分问题?说一下问的最多的吧。如,我的程序运行不了,一行代码,5个报错,编写、编译错误、编码格式错误等等,总之五花八门。
根据所述问题,今天聊聊Java编程规范。方便大家观看,把之前的文章整合了。
Java入门基础第1天(什么是Java?)
Java入门基础第2天(java jdk下载与安装教程)
Java入门基础第3天《使用记事本编写运行Java程序》
Java编程规范及编译源代码常见错误的解决方法
一、编程规范
二、命名规则
三、编码格式规定
四、javac 编译器编译源代码文件常见的问题
五、 解释执行.dass文件常见问题
一、编程规范
我们先简单了解一下什么是编程规范?
编程规范是对编程的一种约定,主要作用是增强代码的可读性和可维护性,便于代码重用
二、命名规则
基本要求是,程序中的各个要素都遵守命名规则,
然后在编码中严格按照编码格式编写代码。
命名规则包括以下几点:
► 包的名称由一个小写字母序列组成。
► 类的名称由大写字母开头,其他字母都由小写的单词组成。
► 类的实例的名称由一个小写字母开头,后面的单词由大写字母开头。
► 常量的名称都大写,并且指出完整含义。 参数的名称无其他具体规定。
► 数组的命名使用“类型[] 数组名”的形式。
三、编码格式规定
► 程序最开始编写导入包和类语句,如 import 语句。
import 语句可以有多行,编写完 import 语句后空一行。
► 定义 public 类,顶格书写。类的主体左括号{不换行书写,右括号}顶格书写。
► 定义 public 类中的变量,缩进书写。
► 定义方法用缩进书写,方法的左括号{不换行书写,右括号}和方法首行第一个字符对齐。方法体要再次缩进书写,最后一个变量定义和第一个方法定义之间、方法和方法之间最好空一行。
四、javac 编译器编译源代码文件常见的问题
我们在使用javac 编译器编译源代码时文件时,会出现几个常见的报错问题。
错误描述1、Error:cannot read:HelloJava.java javac。 工具程序找不到指定的 java文件
解决方法:这个需要检查一下你的文件是否存储在当前目录中,或文件名是否错误。
错误描述2、 HelloJava.java:4:class HelloJava is public,should be declared in a file named MyApplication.java。
解决方法:这是你的源文件中类的名称和源文件名称不符,
需要确定源文件名称和类名称是否相同。
错误描述3、 HelloJava.java:6:cannot find symbol。
解决方法:可能是你的源程序文件中某些代码部分输入错了,
最常见的原因可能是没有注意到字母的大小写。
错误描述4、Javac 不是内部或外部命令、可执行程序或批量文件。
解决方法:这是你的 path 设置有误或这你没有在 path 系统变量中加入 JDK 的 bin 目录。
五、 解释执行.dass文件常见问题
我们在解释执行 .dass 文件时,可能会出现以下几个常见的错误报错问题:
错误描述1、 Exception in thread “main” java.lang.NoClassDe£FoundError。
报错出现在Java 工具程序找不到所指定的 .class 类,
需要确定指定的类是否存储在当前目录中,名称是否正确。
错误描述2、 Exception in thread “main” java.lang.NoSuchMetliodError:main。
问题出现在没有指定 Java 程序的入口。
Java 工具程序指定的类必须有一个程序入口,
也就是必须包括 main(String args[]) 这个方法。
鼓励: 如果你觉得博主的文章的不错或者对你有帮助,
可以点一个免费的关注支持一下博主,
如果三连收藏支持就更好了吖,嘿嘿嘿,谢谢。
Java程序的运行需要经历三个步骤:
编辑
编译
运行
其中,编辑是编写源码的过程,编译是将源码编译成.class文件。运行时,找的就是.class文件,运行程序时,以main函数为入口,开始执行程序,重点是,下次程序运行时,JVM虚拟机不会再次编译源码,而是直接寻找对应的.class文件,从而运行程序。
所以,编译源码后,如果有新的修改,需要重新编译,生成.class文件,然后,才会执行。
修改源码后若不编译便直接运行,JVM使用的仍然是上一次运行的.class文件。