【问题标题】:Interface binding in EclipseEclipse 中的接口绑定
【发布时间】:2012-10-10 10:14:36
【问题描述】:

我在 Eclipse(Helios)/STS 中有以下代码,它在执行 Run As> Java 应用程序时运行并打印控制台输出,尽管存在明显的编译问题

public interface ITest{
    String func();
}

public static class Test implements ITest{
    void printFunc(){
        System.out.println("Inside Test Function");
    }
}

public static void main(String[] args) {        
    Test test = new Test();
    test.printFunc();
}

谁能指出这个 Eclipse 运行背后的原因。

注意:在外部执行 javac 显然无法编译。

【问题讨论】:

  • 我试过了。 eclipse 显示通常方法未实现错误。
  • 是的。 Eclipse 编译器确实显示错误。但是代码仍然设法通过 Run-As> Java Application “运行”。因此问题。

标签: java eclipse interface compilation


【解决方案1】:

Eclipse 的 Java 编译器旨在处理易碎的非编译代码。它会在代码中添加任何必要的东西以使其编译。

看到这个问题What is the difference between javac and the Eclipse compiler?

【讨论】:

    【解决方案2】:

    可能是您在出现错误之前成功编写了类。 Eclipse 会在您编码时自动编译您的文件。就在这时,你碰巧遇到了错误。然后你决定作为 Java 应用程序运行,Eclipse 将运行最近编译的类。

    我尝试了您的代码,实现了消除错误的必要方法,然后再次将其删除以恢复错误。果然,它打印出"Inside Test Function"。我也试过注释掉System.out.println("Inside Test Function");,它仍然打印出来。

    在另一次尝试中,我创建了另一个类,添加了您的代码,然后运行(没有实现错误以避免自动编译),然后它打印出一个错误..

    java.lang.NoSuchMethodError: main
    Exception in thread "main" 
    

    【讨论】:

    • 你是怎么得到java.lang.NoSuchMethodError: main 错误的。您是否将完全相同的代码放入您创建的新类中。我试图像你说的那样重新创建场景,但我的经历与所说的不同。每次我保存 jave 文件时,我都会得到一个匹配的控制台响应,而不是一个“缓存”的响应(例如,注释掉 Sysout 部分)。只是想在保存后检查您是否在构建文件?'
    猜你喜欢
    • 1970-01-01
    • 2019-01-19
    • 1970-01-01
    • 2014-04-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多