黑马程序员技术交流社区

标题: 关于eclipse的编译源文件的问题 [打印本页]

作者: 张水荣    时间: 2012-7-20 15:48
标题: 关于eclipse的编译源文件的问题
1. Eclipse 是否一保存源文件就马上编译?

2. 是否是在编译时才检查语法错误,如果不是,那么为什么我们在正写代码的时候,没有保存,而eclipse工具依然会提示错误呢?


作者: 张水荣    时间: 2012-7-20 15:49
求解释!
作者: 夏儒日    时间: 2012-7-20 15:59
问题1、eclipse是自动编译的吧。你直接run就可以了;
问题2、Eclipse本身没有编译javascript时候的语法错误提示 你下个jsEclipse插件以后就有了 。这是靠eclipse自带的插件实现的,的确属于静态分析。动态分析我不太了解,可能会涉及到jvm,但主要是在编译器内获取一些动态信息,如果想对java的多态进行分析就需要动态分析,即在编译时获取具体调用的类的信息。但如果是问eclipse的语法纠错,远没涉及那么高级的内容。
eclipse纠错时,还没有调用编辑器,即程序还没有编辑。只有在运行程序前eclipse才会调用编辑器。编译一次不容易,每次纠错都调用编译器的话开销太大,纠错的反应速度绝对不会像平时eclipse做的那么快。
实际上eclipse可以说就是由各种插件组成的,它本身只提供一个供各种插件运行的平台,本身功能很简单,但就是通过向jdt这样的插件包实现各种复杂的功能。
希望对你有所帮助。
作者: 张水荣    时间: 2012-7-20 21:31
本帖最后由 张水荣 于 2012-7-20 21:59 编辑

老师讲课的时候是说eclipse是一保存就会进行编译并进行语法检查的,我想大多人应该也这么认为吧,
可是在我们写程序的时候,就算我们没有进行保存,eclipse一样会检查语法,比如当一个单词写到一半,
停在那里不写,过一会,eclipse就会用一条红线提示我们。
我认为,当我们保存源文件的时候,eclipse的确是马上进行了编译,并重新检查语法。但当我们没有保存
时,eclipse也进行了检查语法,但用的是JavaScript脚本检查,而不是用编译器检查,不知对不对!
作者: 王龙彪    时间: 2012-7-20 21:38
1,是.
2,是.
楼主可以做个测试,在新建一个java文件的时候,你的D:\workspace\包名\ 下就有一个对应的class文件了.呵呵
作者: 陈欢    时间: 2012-7-20 22:26
1,Eclipse有自动编译功能 这个功能你可以自己决定用还是不用
2,这是靠eclipse自带的插件实现的,的确属于静态分析。动态分析我不太了解,可能会涉及到jvm,但主要是在编译器内获取一些动态信息,如果想对java的多态进行分析就需要动态分析,即在编译时获取具体调用的类的信息。但如果是问eclipse的语法纠错,远没涉及那么高级的内容。
    如果你去看eclipse文件夹下的plugins文件夹,你能找到类似org.eclipse.jdt.XXX.XXX的若干jar文件,那些包就是eclipse专门用以处理java代码分析工作的jdt插件工具包。他能抽取java代码的AST(抽象语法树),也就是编译时用到的数据结构,你若学过编译原理就知道了,反正我还没学。如果做一些java方面的逆向工程,你甚至可以引用eclipse的jdt包,将java项目的代码通过相应接口(你可以在网上找到jdt的api和实例代码)传进去,获取代码中的类,字段,方法,和更细节的信息。
    而jdt中也包含检测,处理语法错误的包,可以发现并纠正语法错误。这一特点还可以用来做一些正向工程(如自修改或动生成代码)。
    哦,还有,针对你的问题还要说,这点特性不是编译器的,而是编辑器eclipse的。注意,绝对是编辑器的特点!虽然涉及到语法问题,但在eclipse纠错时,还没有调用编辑器,即程序还没有编辑。只有在运行程序前eclipse才会调用编辑器。编译一次不容易,每次纠错都调用编译器的话开销太大,纠错的反应速度绝对不会像平时eclipse做的那么快。
    实际上eclipse可以说就是由各种插件组成的,它本身只提供一个供各种插件运行的平台,本身功能很简单,但就是通过向jdt这样的插件包实现各种复杂的功能。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2