如何在Eclipse IDE中设置非Eclipse Java编译器

8
我注意到 Eclipse IDE(适用于 Java,版本 3.5.1)使用了自己的 Java 编译器,但我找不到如何更改它。这是可能的吗?
也许这有点琐碎,但是在使用 IntelliJ IDEA 多年后,我发现回到 Eclipse 有点笨拙。
谢谢。
更新:由于需要更详细的解释,我正在进行说明。
最近,我帮助一位 Java 开发人员并注意到他在没有 Sun 的 JDK 的情况下使用 Eclipse。由于我们公司仅使用 Sun 的 JDK,我觉得这很奇怪。
这是因为 Eclipse 自带其自己的编译器(请参阅这里以获取更多详细信息),因此不需要其他编译 Java 代码的工具(如 javac)。
本身我觉得这个功能非常好,我相信有很好的理由。但是我希望我们公司的所有开发人员都使用相同的编译器来生成 Java 字节码(.class 文件)。并在同样的 JVM 中运行。只是为了尽可能统一环境并消除其他特定于环境的问题。我在 Eclipse 中指定 JRE 没有问题。
但是,我无法找到如何将默认的 Java 编译器更改为 javac。另一方面,我的主要 IDE IntelliJ IDEA 允许这样做(选择 javac、jikes 或 eclipse 编译器)。所以我想知道 Eclipse 是否也可以做到这一点。
另外:
- 不,我对 Eclipse 编译器本身没有实际问题,这只是能够进行选择的问题。 - 我知道可以使用 Apache Ant 和其他解决方案使用任何编译器编译 Java 代码。但在这里,我对 Eclipse 及其集成的项目构建感兴趣(例如Project菜单下的菜单项)。

1
你能描述一下什么是尴尬吗? - J-16 SDiZ
您是否遇到了特定的问题? - Nivas
回到Eclipse的感觉有些尴尬(我曾经使用它几年,但是已经很久了),这是另一个话题,让我们专注于主要问题。但总的来说,我发现Eclipse的配置不是很容易,也不是非常透明。 - Ralkie
1
没有所谓的“不琐碎”。它只是纯粹的“不可能”。Eclipse使用内置编译器进行代码完成、重构、快速修复、语法高亮等操作——禁用它意味着IDE将无法使用。 - J-16 SDiZ
4个回答

4
如果您想要拥有由Sun编译器创建的类,您可以使用Ant构建它们。Eclipse使用自己的编译器,因为Sun的编译器不适用于自动编译环境。根据JDT网站所述:增量Java编译器。作为Eclipse builder实现,它基于从VisualAge for Java编译器演变而来的技术。特别是,它允许运行和调试仍包含未解决错误的代码。请记住,对于库本身,Eclipse仍将使用来自Sun编译器的库,该过程可以使用其他答案(NimChimpsky和The Elite)解释的过程进行设置。

谢谢,但我不明白如何通过选择不同的JRE来设置编译器。我更新了我的问题,也许更清楚我想表达什么。 - Ralkie
好的...有了那个更新,答案现在更容易了。不行,这是做不到的。 - nanda
生成字节码的部分,即编译器本身,并不绑定到特定的类库集合。它将使用项目的Java构建路径来编译。 - nitind

1

虽然我也寻找过这个问题的解决方案,但我发现唯一的解决方法是使用Maven。通过maven-compiler-plugin,您可以指定要使用的编译器,而eclipse将委托给它。我希望Ant-based项目也能有类似的技巧。

            <plugin>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>2.3.2</version>
            <configuration>
                <compilerId>javac</compilerId>
                <encoding>${project.build.sourceEncoding}</encoding>
            </configuration>
            <dependencies>
                <dependency>
                    <groupId>org.codehaus.plexus</groupId>
                    <artifactId>plexus-compiler-javac</artifactId>
                    <version>1.6</version>
                </dependency>
            </dependencies>
        </plugin>

dp4jmaventest 是使用此配置的工作演示。

Bug 341842 是一个Eclipse功能请求,用于支持这样的功能。


1

以下是如何添加自己的JDK/JRE:

  • 进入 Windows -> Preferences 菜单。
  • 在 Preferences 窗口中,从左侧下拉菜单中选择 Java -> Installed JREs
  • 点击右侧的 Add 按钮,选择 Standard VM,然后会出现一个标题为 Add JRE 的对话框。
  • JRE home 字段上,点击 directory 按钮并浏览到您的JRE/JDK根目录。一旦选择完成,它将自动完成并点击完成。

完成后,返回到 Preferences 窗口,并选中您添加的JRE/JDK的单选按钮以使其成为默认值。

希望这可以帮助到您。


这会更改JDK路径,而不是编译器(ecj)。 - J-16 SDiZ
@J-16 SDiZ,没错,但问题不够明确,你不能改变Eclipse编译器,但可以允许你的代码使用Oracle JDK进行编译。 - Buhake Sindi
2
谢谢,但是设置JRE真的与编译有关吗?至少我曾经认为Sun的JRE包中没有像javac这样的工具(这就是为什么我们有JRE和JDK,它们不同)。 - Ralkie
当然可以,但我指的是编译器部分,而不是运行时库。 - Ralkie

-1

右键点击项目 > 属性 > Java编译器


是的,我找到了这个表单,但据我所知,它更多地涉及一些额外的编译选项,而不是设置不同的Java编译器实现(javac)。 - Ralkie

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