Eclipse是怎么编译java文件的?

113A 2005-08-22 06:05:03
换了一台新机器,把从官方下载的Eclipse压缩包解压缩后,为了省事,我复制了一份jre过来,然后加到path里面。想先把Eclipse运行起来再说。但是惊奇的是,Eclipse不但运行了,而且还给我造了.class出来……
往常都是用javac编译的,但是我翻遍了硬盘没有找到javac.为什么我只有jre仍然可以编译呢?Eclipse是用什么编译的?是不是jre自己也有编译的功能?那么jdk到底多了那些东西?
...全文
9713 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
113A 2005-08-24
  • 打赏
  • 举报
回复
谢谢gtlang78,结贴。^_^
KingJulius 2005-08-23
  • 打赏
  • 举报
回复
eclipse不是集成了Ant吗??这些编译的工作应该是Ant去完成的吧。我正在学Ant这东东,因为他很实用,而且很小,容易掌握。
Ant 最初是 Tomcat 的一个内部组件,Tomcat 是 Java Servlet 和 JavaServer Pages (JSP) 参考实现中使用的 servlet 容器。Tomcat 代码基被捐赠给了 Apache 软件基金会;在那里它又成了Apache Jakarta 项目的组成部分,该项目致力于为 Java 平台产生开放源代码的服务器端解决方案。Ant 的有用性很快得到了认可,对它的使用遍布在其他 Jakarta 子项目中。因而,它自己也成了一个 Jakarta 子项目,其第一个独立版本于 2000 年 7 月发布。
从那以后,Ant 的普及性已经不断地提高。它赢得了无数的行业大奖,并成为用于生成开放源代码
Java 项目的 事实上 的标准。2002 年 11 月,这些成功得到了确认,Ant 被提升为顶级 Apache 项
目。
gtlang78 2005-08-23
  • 打赏
  • 举报
回复
eclipse的JDT里自带编译器,源程序在
eclipse3.1\plugins\org.eclipse.jdt.source_3.1.0\src\org.eclipse.jdt.core_3.1.0\src.zip|org\eclipse\jdt\internal\compiler 底下
113A 2005-08-23
  • 打赏
  • 举报
回复
既然KingJulius说到了Ant,感觉确实和make差不多。不过make的功能更单纯。而且语法也更像程序语言,很方便手工编写;而Ant的xml则更适合于工具,或利用工具产生后再手动更改。随着集成环境的发展,以后基于xml的东西应该越来越多啦。apache还是基于普通的文本配置文件,但是tomcat则已经是xml了。基于xml虽然手工编写不方便,但是方便工具识别,使用工具修改和编写。
Ant似乎和jdk结合很密切,没有了jdk就很难运行。相对来说make就更独立一些。make不但可以编译,甚至可以做任何你想通过脚本来做的事情。BORLAND C++BUILDER COMMAND LINE TOOLS里面就有个make.exe,用起来很方便。
113A 2005-08-23
  • 打赏
  • 举报
回复
Ant是调用JDK里面的tools.jar里面的com.sun.tools.javac.Main来进行编译的,如果没有猜错,javac可能也是调用它来编译的,也就是说,java已经早就是自编译啦(就和c编译c一样,现在java是java编译的,只是虚拟机不是java写的而已)。但是Ant仍然需要tools.jar,也就是说它需要jdk,仅有jre是无法编译的。
Ant不是很熟悉,从网上找了个build.xml的示范,发现javac和Ant还有Eclipse的编译结果都不同,当然这个不排除编译参数的问题。编译的功能可能在JDT里面包含了吧,或许自带的编译器为其提供了更方便的调式等功能。我赞同alexlex的观点。呵呵,不容易呀,连这个都能发现。我一直没想到。

呵呵,有没有大虾能找一下是哪个包负责这个功能呀?或是我猜错啦。如果没有的话就结贴了。嘿嘿,没有刨根问底还是有点不爽呀。
alexlex 2005-08-23
  • 打赏
  • 举报
回复
从使用的经验来看,我用javac编译的class文件和eclipse编译的class文件略有不同

因此我想eclipse自带编译器
113A 2005-08-23
  • 打赏
  • 举报
回复
想一下也是,javac.exe只有48.1 KB,它肯定也是调用别的api去实现的,估计Eclipse也是类似的方式调用的。小弟初学java不久,不知道java里面有没有这种api呀。以前听师兄说.net似乎可以运行时内部编译,将一部分c#代码编译并执行;以前写过php,php也有这种功能,可以执行任何一段合法的php代码。
113A 2005-08-23
  • 打赏
  • 举报
回复
我是从官方下载的eclipse-SDK-3.1-win32.zip,jre是从另外一台机器上的c:\Program Files\java\里面拷贝过来的。
通常我们在命令行下编译都是用javac命令将java文件编译成class文件的,但是jre里面是没有class的,是不是javaw自己也有编译的能力?
那样就爽了,我就可以写一个java文件,编译为class运行,然后这个class写一段java代码到一个.java文件并且调用jre编译它,进而运行新编译的程序。^_^
yeno说的对,它会搜索自己目录里面的jre\bin目录以及系统的PATH,JAVA_HOME这个环境变量是不需要的。呵呵,看来真的不需要jdk啦。
humanity 2005-08-23
  • 打赏
  • 举报
回复
有些 Eclipse 自带了 JDK ,如果没有自带会自动搜索 JAVA_HOME ,楼上方法可行,
其实楼主可以看看 Windows 任务管理器,如果你的任务管理器不够详细可以下载一个更好的进程查看工具 : http://www.sysinternals.com 看没有个 命令行和参数。
yeno 2005-08-22
  • 打赏
  • 举报
回复
这个就不太清楚了,Eclipse运行时会自动寻找系统中的JDK路径,并且寻找相应的编译器去编译源文件,Eclipse安装时找的本来就是JRE的路径,而不是JDK,楼主可以在"窗口"--"首选项"中查看

58,453

社区成员

发帖
与我相关
我的任务
社区描述
Java Eclipse
社区管理员
  • Eclipse
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧