2015-02-11 102 views
-1

我正在使用RHEL。我只是運行下面的程序打印一行在我的控制檯,命令行編程

package test; 

    public class test 
    { 
    public static void main(String a[]) 
    { 
     System.out.println("hi"); 
    } 
    } 

我使用編譯它,

javac test.java 

我想跑,

java test.test 

它說,

could not load or find main class 

我在m目錄y類文件存在。

ls 
上的目錄顯示

test.java test.class 

可能是什麼原因?

java test 

說,

Exception in thread "main" java.lang.NoClassDefFoundError: test (wrong name: test/test) 
+0

1.不宜'test'編譯失敗?您在方法或「靜態」塊上下文之外調用功能。 2.你不需要'public static void main(String [] args){...}'方法嗎? [for exampe](http://docs.oracle.com/javase/tutorial/getStarted/application/) – MadProgrammer 2015-02-11 05:17:40

+0

omg我錯過了輸入 – 2015-02-11 05:18:51

+0

Downvoter,我改正了它。任何其他原因 – 2015-02-11 05:20:18

回答

1
  1. .java文件應該如果使用javac test.java存儲內的test目錄(test/test.java
  2. ,然後確保你執行java test.test前更改目錄的父目錄(cd ..),因爲Java將尋找在test目錄(或包)test.class

採取在Lesson: Packages仔細一看更多的細節。

你可能想必須通過Code Conventions for the Java TM Programming Language讀,它將使人們更容易閱讀您的代碼,供您閱讀別人

+0

什麼部分?你把'.java'放在正確的目錄下了嗎?你是否從頂層包的父目錄執行類文件?我原以爲[管理源文件和類文件](http://docs.oracle.com/javase/tutorial/java/package/managingfiles.html)會對解釋答案細節的要求有所幫助。 .. – MadProgrammer 2015-02-11 05:27:15

+0

3分鐘後我會接受它。請讓我知道downvoting的原因。我會在將來糾正它 – 2015-02-11 05:27:52

+1

@GopsAB我不確定答案的下調情況,有些人非常關注「簡單」的錯誤,尤其是當他們可以通過使用適當的教程來解決或者如果問題通常被問到(是的,這只是每月幾次) – MadProgrammer 2015-02-11 05:29:44

2

java需要類名(包括封裝)作爲參數,而不是一個文件名。

同時,該類test.test必須存儲在test/test.class - test.class在當前目錄。

你應該有test.class在一個名爲test的文件夾中;轉到外夾(包含test的一個),然後運行:

java test.test 
+0

@MadProgrammer對,讓我解決這個問題... – immibis 2015-02-11 05:19:11

+0

java test.test說找不到類。 – 2015-02-11 05:19:20

+0

@GopsAB什麼是您的文件夾結構,當您運行命令時,當前目錄是什麼? – immibis 2015-02-11 05:21:13

0

這裏是我的一個簡單的Java程序做的:

  1. 沒有package xxx;

  2. 確保主類的名稱是Test - 首字母大寫

+0

不建議將類存儲在默認包中,因爲它可能會導致無法評估。 – MadProgrammer 2015-02-11 05:23:01

+0

@MadProgrammer它只是不被推薦用於足夠複雜的程序來拆分成多個包。 – immibis 2015-02-11 05:26:22

+0

@immibis如果你永遠不想要任何東西來加載這些類;) – MadProgrammer 2015-02-11 05:33:10