2011-08-02 79 views
3

我指的是我以前的問題,但是這次我使用了java編譯器,編譯器符合輸出 - 它給出了一個奇怪的輸出。這次我用'this'而不是'super'。 enter image description here這是Java中的錯誤還是什麼?

這是程序的代碼。

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來運行程序,有沒有發現異常的類。 A.java是文件名......我們做了一個小小的編輯,並創建了一個名爲A.java的公共類,但結果是一樣的。我們進一步發現問題在於編譯器。

+0

運行它如何?如果你的文件被稱爲'A.java',你需要一個名爲'A'的公共類。 –

+1

A.java – ngesh

+0

javac是對每個文件執行此操作還是隻對'A.java'執行此操作?有人可以替換你的'javac.exe' :) –

回答

12

在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

+0

這個問題在Windows的每個版本中發生了什麼或者只是Windows 7? – Chan

+0

@ Duli-chan:這回溯到DOS的時代。另見:http://en.wikipedia.org/wiki/Filename#Comparison_of_filename_limitations – Vlad

2

是的,它看起來像一個錯誤。它編得非常好我

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(甲骨文)JDK或OpenJDK的?

問題可能與類名(Con)和文件名(A)不同(它們應該是相同的)並且在同一級別中有兩個類在單個文件中有關。無論如何,它在我的盒子上編譯得很好。

+0

我使用的是Sun JDK ...我們在兩臺不同的機器上嘗試過,結果非常相似。不僅如此,還有一種奇怪的嘟嘟聲! – Chan

+0

我記得,類名只需要在類是公開的時候匹配文件名。可以將兩個或更多類放在單個文件中,但只有一個類可以具有公共範圍。 –

+0

@ Duli-chan當系統「打印」字符代碼7時,蜂鳴聲可能是「嘟嘟」字符。 –

3

你是如何編譯它的?在Win7 32b與Java 1.6我得到:

類型名稱無效。 'Con'在這個平臺上是一個無效的名字。

+0

因爲'con'是Windows上的受限名稱。 http://www.hoax-slayer.com/con-folder-name.shtml –

+0

我們在Win 7 64bit上運行它... – Chan

+0

在Eclipse中,我得到:_A類文件沒有寫入。該項目可能不一致,如果是的話嘗試刷新這個項目,並建設它_ – Vlad

0

我救了你的代碼爲DemoCon.java .

並運行它作爲

javac DemoCon.java 

java DemoCon 

O/P是

x :2 
    x :2 
+0

另一臺機器給這個輸出在這裏兩個。但是我們有兩臺機器可以提供相同的輸出^^ – Chan

1

在Java中,類名和文件名必須是正好與一樣。在你的情況下,你的班級名稱是Con,因此,你的班級文件必須Con.java。由於DemoCon是您的類static void main(String[] args),您的java文件必須是DemoCon.java

+0

這裏也是一樣。在改變它之後它也不在這裏工作。 – Chan

+0

我們在這裏有兩臺機器,可以給出準確的蜂鳴聲~~ – Chan

+0

@ Duli-chan,然後向我們解釋**如何設置您的機器和開發環境。 –

7

可能存在問題,因爲CON是一個保留的文件名(這是在MS-DOS - 見http://support.microsoft.com/kb/31157 http://www.computerhope.com/copyhlp.htm)

+0

它肯定是問題...類命名是否有類似的問題.... – Chan

+0

'LPT1''COM1''NUL'等是保留的MS-DOS設備名稱 – BertNase