【发布时间】:2012-05-19 18:37:50
【问题描述】:
当下面的java代码在eclipse中执行时,它给出了正确的输出(即打印'Class B'),但根据java规范,无法编译代码(因为超类构造函数需要int参数并且编译器为B类提供的构造函数包括对超类无arg构造函数的调用,该构造函数未定义),当尝试在命令行中使用javac命令编译文件时,它只编译超类即A类并因以下编译错误而失败:
B.java:8: cannot find symbol
symbol : constructor A()
location: class A
public class B extends A {
^
1 error
以下是java文件内容:
class A {
public A(int x) {
//
}
}
public class B extends A {
public static void main(String[] args) {
System.out.println("Class b");
}
}
谁能解释一下 eclipse 如何在 bieng 无法编译类的情况下执行 main 方法。提前致谢。
更新
我删除了bin文件夹中eclipse创建的.class文件,尝试执行该类,但无法编译,因此没有运行。但是当我创建了一个带有公共类名的源文件并保存时没有任何内容,然后添加了上述内容,它就起作用了。如果eclipse使用之前编译的版本执行,怎么能给出main方法的输出呢,因为它在完整编译成功的时候没有main方法呢?
【问题讨论】:
-
你是在执行同一个文件还是在运行其他主类?
标签: java eclipse compilation