2017-04-09 69 views
2
package abc ; 
class Trying 
{ 
Trying() 
{ 
    System.out.println("hello"); 
} 
     } 

public class trying { 
public static void main(String[] args) { 
    new Trying() ; 
} 

} 

在這個時候,我從嘗試到它的工作原理其他名稱更改類的名稱,但在這裏說:找不到主類中的Netbeans

錯誤:無法找到或加載主類ABC .trying /Users/name/Library/Caches/NetBeans/8.2/executor-snippets/run.xml:53:Java的返回:1個 構建失敗(總時間:0秒)

這究竟是爲什麼? 我在任何已經提出的問題中都沒有找到這種情況。

+0

的JDK和操作系統您正在使用的? –

+0

我已經安裝了這個:jdk-8u121-macosx-x64(1).dmg – shikhar

回答

1

Java是大小寫敏感的語言,但沒有說明文件類的名稱應區分大小寫。

在日食它會告訴你語法錯誤

Class file collision: A resource exists with a different case: '/sample/bin/abc/Trying.class'.

OR

如果沒有顯示錯誤,將創建只有一個類或者Tryingtrying的類文件。

1) 如果產生Trying類的類文件,那麼它會拋出

Error: Main method not found in class abc.trying

由於在Trying類中沒有主要方法,並在運行時它尋找到啓動主要方法。

2) 如果產生trying類的類文件,那麼它會拋出

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

在這裏運行時,它尋找Trying類,因爲它在tryingmain調用。它無法加載它未編譯的。

因此,我們可以得出結論,使用Java是允許兩個類sameName甚至不同情況區分大小寫的類名的

更多細節here

-1

您已指定嘗試多次。

package abc; 

public class Trying { 

    public static void main(String[] args) { 

     trying1(); 

    } 

    public static void trying1() { 

     System.out.println("Good?!"); 

    } 

} 
+1

類名雖然區分大小寫,不是嗎? 「嘗試」和「嘗試」是兩個不同的類,不是嗎? – Gendarme

+0

嘗試和嘗試是不同的類。 – shikhar

0
class Trying 
{ 
    Trying() 
    { 
     System.out.println("hello"); 
    } 
} 

public class Try_Main { 
    public static void main(String[] args) { 
     new Trying() ; 
    } 
} 

請使用比其他同名的兩個不同的類名不同的情況。 在編譯時,編譯成功並編譯後會創建兩個同名但類型不同的類文件。但是,操作系統只允許一個文件,它只是覆蓋第一個文件(第一個在編譯時創建,然後第二個)。在運行時,您將收到運行時錯誤,因爲其中一個類缺失。所以,請使用不同的名稱...

0

嗯,這個類應該是公共,並確保保存文件名作爲類名稱