2013-10-09 116 views
-1

我寫了一個命名方案HelloWorld.java 並存儲在一個文件夾(封裝)test該測試包括hello文件夾本身。 和所有在我的工作區。如何訪問軟件包?

我的意思是這樣:d:\workspace\test\hello\HellWorld.java
我在我的道路環境進入d:\workspace,我的代碼:

package test.hello; 
public class HelloWorld 
{ 
public static void main(String[] args) 
    { 
     System.out.println("HelloAll"); 
    } 
} 

當我去到CMD hello目錄和編譯HelloWorld.java一切都很好,做。 但我用java HelloWorld(在d:\workspace\test\hello)我得到的線索主要錯誤異常。

你能幫我做這個只是簡單的問題?

+1

「在線程主體錯誤,我得到exeption」 - 什麼是確切的錯誤信息?它包含有關錯誤的重要信息。 – Jesper

+0

Exepction in thread「main」java.lang.NoClassDefFoundError:HelloWorld <錯誤名稱test \ hello \ HelloWorld –

回答

1

在CMD窗口去d:\工作區,併發出以下CMD

d:>workspace>java test.hello.HelloWorld

+0

我知道這個..但我想調用HelloWorld而不聲明特定的目錄! 我該怎麼做? 是真的嗎?! 我想,因爲我寫了Java HelloWorld,它符文。 –

+3

@ user2857832這是不可能的,當你想運行一個具有main方法的類時,你必須指定它的全限定名,即包含包。除非您在默認包中定義類,否則在這種情況下,完全限定名稱本身就是類名稱,但這不鼓勵。 – A4L

+0

你的意思是如果我寫一個不包含main方法的類,並編譯,那麼我可以運行它沒有特定的目錄? –

1

CD至d:\工作區

編譯using-

javac -d . HelloWorld.java

上面將創建封裝結構。

運行using-

java test.hello.HelloWorld

+0

我剛做了包b4編寫代碼... :-D –

1

您需要從源目錄即d:\workspace使用java命令這裏提到:

java test.hello.HelloWorld 

的語法很簡單,只要到你的源代碼目錄不是軟件包目錄。使用類名和完整軟件包名稱。

+0

我知道這個..但是我想調用HelloWorld而不聲明特定的目錄!我怎樣才能做到這一點?一切都是真的嗎?!我想,我所著的Java的HelloWorld,這符文 –

+0

@ The.Only.One你不能沒有,除非它存在於默認pacakge包名稱運行的Java類。原因很簡單,你可能有多個具有相同名稱但不同包中的類。 –

2

您必須使用類的完全合格的名稱來運行它。

站在d:\workspace\

運行:

java test.hello.HelloWorld 
+0

我知道這一點,但我想調用HelloWorld而不聲明特定的目錄!我怎樣才能做到這一點?一切都是真的嗎?!我想,我所著的Java的HelloWorld,這符文 –

+0

@ user2857832然後,你需要刪除'包test.hello;'在HelloWorld.java。當HelloWorld是特定軟件包的一部分時,你無法做到這一點。 – nos