【问题标题】:How to configure Eclipse to compile using Oracle javac 1.7.0_09?如何配置 Eclipse 以使用 Oracle javac 1.7.0_09 进行编译?
【发布时间】:2013-01-06 19:54:32
【问题描述】:

我正在尝试编译以下代码:

public class DuplicateMainExample {
    public static void main(String[] args) {
        System.out.print("A1");
    }

    public static void main(String... args) {
        System.out.print("A2");
    }   
}

在 Eclipse 中它工作正常,但在两种方法上都有警告 - “DuplicateMainExample 类型中的重复方法 main(String[])

使用javac(java版本“1.7.0_09”)出现编译错误:

>javac DuplicateMainExample.java
DuplicateMainExample.java:8: error: cannot declare both main(String...) and main
(String[]) in DuplicateMainExample
        public static void main(String... args) {
                           ^
1 error

如何在Eclipse中使用javac编译?

【问题讨论】:

标签: java eclipse javac


【解决方案1】:

仅仅因为你已经用完全相同的签名声明了两次相同的方法......应该只声明一个类的主要方法。

Eclipse 已经嵌入了它自己的编译器,在两个主要方法的情况下它得到最后一个,eclipse 编译器和 javac 编译器是两个不同的编译器...

查看this older post了解更多信息...

如果你想用 javac 编译你可以试试using the ant javac adapter from within eclipse ...但是我认为 ECJ 甚至比 javac 更好(我的观点)...

【讨论】:

  • 实际上,这不是问题所在。我认为OP意识到了这一点。问题是如何告诉 Eclipse 使用正确的 javac 而不是它自己的前端。
  • @Logan 如链接的“旧帖子”中所述,ECJ 甚至可以从存在编译错误的代码创建(部分).class 文件。在这种特殊情况下,您“幸运”的是 .class 文件甚至不需要在错误位置引发异常,因为实际上存在无错误方法(只需删除其他方法)。理解这一点应该足以让 ECJ 感到满意 - 无需费劲儿地让 Eclipse 通过 ant 调用 javac 即可获得大部分即时反馈......
【解决方案2】:

Eclipse 永远不会使用 javac。它的动态高亮能力与它自己的编译器密切相关,它具有增量操作的特殊能力。

如果你想要一个使用 javac 的 IDE,你可以研究一下 intellij。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-03-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-10
    • 2020-12-29
    • 1970-01-01
    相关资源
    最近更新 更多