我指的是我之前的问题,但这次我使用了java编译器,编译器编译输出 - 它给出了一个奇怪的输出。这次我使用this
代替super
。
这是该程序的代码。
class Con {
int x = 10;
Con() {
this(2);
System.out.println("x :" + x);
}
Con(int i) {
x = i;
System.out.println("x :" + x);
}
}
class DemoCon {
public static void main(String args[]) {
Con c1 = new Con();
}
}
您认为这里的问题是什么?这是Java中的错误吗?
Java版本 - 1.6.0 JDK
我使用Eclipse运行程序,并且找不到Class。
A.java
是文件名...我们进行了一次小编辑,并创建了一个名为A.java
的公共类,但结果是相同的。我们进一步发现问题在于编译器。
答案 0 :(得分:14)
在Windows上,似乎CON是保留名称,不能用于文件夹/目录或文件名。
以下
print "test" > Con.java
无效。
因此编译器无法创建Con.class并崩溃。
来自MSDN:
请勿将以下保留的设备名称用作文件名:
CON,PRN,AUX,NUL,COM1,COM2,COM3,COM4,COM5,COM6,COM7,COM8,COM9,LPT1,LPT2,LPT3,LPT4,LPT5,LPT6,LPT7,LPT8和LPT9。同时避免使用这些名称后立即进行扩展;例如,不建议使用NUL.txt
答案 1 :(得分:7)
也许问题存在,因为CON
是一个保留的文件名(它在MS-DOS上 - 见http://support.microsoft.com/kb/31157 http://www.computerhope.com/copyhlp.htm)
答案 2 :(得分:3)
你是如何编译的?在带有Java 1.6的Win7 32b上,我得到:
类型名称无效。 'Con'在此平台上是无效的名称。
答案 3 :(得分:2)
是的,它看起来像一个bug。它在我的
上汇编得非常好Java(TM) SE Runtime Environment (build 1.6.0_26-b03-383-11A511)
Java HotSpot(TM) 64-Bit Server VM (build 20.1-b02-383, mixed mode)
Mac OS X上的环境。
如果您告诉我们您使用的是Sun(Oracle)JDK还是OpenJDK,也许我们可以提供更多帮助?
问题可能与类名(Con
)和文件名(A
)不同(它们应该相同),并且在单个文件中同一级别有两个类。无论如何,它在我的盒子上编译得很好。
答案 4 :(得分:1)
在java中,类名和文件名必须完全相同。在您的情况下,您的班级名称为Con
,因此,您的班级文件必须为Con.java
。由于DemoCon
是您的static void main(String[] args)
类,因此您的java文件必须为DemoCon.java
。
答案 5 :(得分:0)
我将您的代码保存为DemoCon.java .
并将其作为
运行javac DemoCon.java
java DemoCon
o / p是
x :2
x :2