Eclipse如何只用JRE编译类?

34

我需要使用一个已经“定制化”了的特殊JRE批量编译。

Eclipse可以使用这个JRE来编译类,但是我需要在Eclipse之外制作一个构建脚本。

Eclipse在没有JDK的情况下生成.class文件的方法是什么?

4个回答

48

Eclipse自带编译器的原因如下:

  • 增量编译(只编译项目中更改的部分,这可能比您刚保存的文件数量更多,例如当您更改某个全局变量时)
  • Eclipse编译器可以在代码包含错误的情况下创建类文件。这使得即使不是所有内容都编译完成,也能运行该项目。
  • 编译器为Eclipse提供了一个AST,使其可以执行各种花哨的操作(如大纲、显示光标下的变量使用位置等),而不需要额外的成本(即它不必同时运行编译器和另一个解析器)。

12
甚至有文档说明如何在Eclipse之外作为独立应用程序运行Eclipse编译器:http://help.eclipse.org/galileo/topic/org.eclipse.jdt.doc.isv/guide/jdt_api_compile.htm - Joachim Sauer
1
@AaronDigulla 那么,为什么它强制在首选项中选择“已安装的JRE”? - Can Mingir
@Pacerier:无论如何运行Java代码,您至少需要一个JRE。因此,要运行Eclipse本身或在Eclipse中编写的代码,您至少需要一个JRE(JDK同样有效)。如果您使用m2e插件,则需要一个JDK来启动Eclipse。要在Eclipse外部编译代码,您需要一个JDK。要在Eclipse内部编译代码,您不需要一个JDK。如果您使用m2e插件,则需要一个JDK来运行Eclipse和执行诸如“mvn install”之类的任务,因为Maven编译器插件需要Java编译器,默认值是JDK中的编译器。 - Aaron Digulla
@Pacerier:Eclipse不带有JRE。 - Aaron Digulla
@AaronDigulla,感谢您分享您的知识。这是一篇很好的阅读材料。 - Jagadish Talluri
显示剩余6条评论

5
我相信Eclipse自带内置编译器,您可以在Java->编译器下的首选项菜单中选择兼容性为Java 1.3到1.6。因此,Eclipse不需要外部JDK编译,因为它是自给自足的。
如果您想在Eclipse之外创建构建脚本,则需要外部编译器,例如真正的JDK附带的编译器。

2
如果有人感兴趣的话:Eclipse的编译器是JDT核心的一部分。

0

Eclipse最初是由IBM创建的。Eclipse拥有自己内置的Java编译器,该编译器基于IBM的Java编译器Jikes


我认为Eclipse编译器并不是基于Jikes的。它可能受到了启发,但由于jikes是用C++实现的,而Eclipse编译器是纯Java的,我怀疑它们没有继承任何主要的代码部分。 - Joachim Sauer
好的,如果是这样,那么Eclipse编译器并不完全是Jikes。 至少它们都起源于IBM。 - Jesper

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接