当前位置: 首页 > 面试题库 >

javac和Eclipse编译器有什么区别?

郦兴德
2023-03-14
问题内容

Eclipse的Java编译器是否只是包裹该javac程序的同一个内核的包装器,还是完全独立的编译器?如果是后者,为什么还要重新发明轮子呢?


问题答案:

Eclipse实现了自己的编译器,称为Java Eclipse编译器(ECJ)。

它不同于Sun JDK附带的编译器javac。一个显着的区别是Eclipse编译器使您可以运行实际上未正确编译的代码。如果永远不会运行带有错误的代码块,则您的程序将正常运行。否则,它将引发异常,表明您试图运行未编译的代码。

另一个区别是Eclipse编译器允许从Eclipse IDE内部进行增量构建,也就是说,一旦完成键入,便会编译所有代码。

Eclipse自带编译器这一事实也很明显,因为您可以在Eclipse中编写,编译和运行Java代码,而无需安装Java SDK。

与Javac相比,首选ECJ的一些示例是:

Apache Tomcat使用ECJ来编译JSP,
从GNU Java编译器(GCJ)4.3开始,IntelliJ IDEA支持ECJ 。
GCJ与ECJ集成在一起,
Liferay与ECJ一起构建。




 类似资料:
  • 我正在潜入angular 4,我试图理解编译。我已经读到,AOT和JIT都将TypeScript编译为JavaScript,无论是在服务器端还是在客户端。如果我在用Webpack和grunt构建它时编译它,并部署简化的javascript,那么AOT和JIT又是如何出现的呢?

  • 问题内容: 即时编译器和解释器之间有什么区别,.NET和Java JIT编译器之间有什么区别? 问题答案: 即时编译是在执行之前将非本机代码(例如字节码)转换为本机代码。 从维基百科: JIT基于运行时环境中的两个较早的想法:字节码编译和动态编译。它在本地执行代码之前先在运行时将其转换,例如将字节码转换为本地机器代码。 一种解释执行程序。它可能有也可能没有抖动。 同样,来自维基百科: 解释器可能是

  • 问题内容: 我看到Eclipse有两种主要的发行版本- 一种在3.6、3.7、3.8路径上,另一种在4.0、4.1路径上(http://www.eclipse.org/e4/)。 我不清楚这两种分布之间的区别是什么? 问题答案: 3.7(代号)和3.8是漏洞修复和稳定性版本,而4.0、4.1、4.2(代号)是成熟的平台功能集。版本3.8和4.2同时进行。您可以在此处找到有关Eclipse项目计划的

  • 问题内容: 我有一个Java Maven项目,其中包含大约800个源文件(有些是由javacc / JTB生成的),用Javac编译需要25分钟。 当我将pom.xml更改为使用Eclipse编译器时,编译大约需要30秒。 关于javac(1.5)为什么运行如此缓慢的任何建议?(我不想永久切换到Eclipse编译器,因为Maven的插件似乎不止是个小问题。) 我有一个容易重现问题的测试用例。以下代

  • 当我从Eclipse构建到maven构建时,我发现了项目中的许多问题。我使用2.5.1编译器插件。 JDK是开放的-JDK-7 我在一个新项目中隔离了这个问题,并对其进行了深入研究。问题是: 这无法使用javaC进行编译(但在Eclipse中工作),并说明以下错误: [错误]无法执行目标组织。阿帕奇。专家插件:maven编译器插件:2.5.1:项目测试时编译(默认编译):编译失败 [错误]/hom

  • 问题内容: 在我的关于多态性的专业幻灯片中,我看到了这段代码,并带有一些注释: 如您所见,它在第一个强制转换语句中表示将产生 运行时 错误,而在另一个声明中将产生 编译器错误 。 是什么导致这些错误?以及它们之间有何不同? 问题答案: 仅在代码实际运行时才会发生运行时错误。这些是最困难的-导致程序崩溃和代码中的错误,难以跟踪。 一个示例可能正在尝试将字符串“ hello”转换为整数: 编译器可能不