2012-02-10 196 views
3

這個問題之前已經被問過了,但是由於某些原因我仍然無法確定什麼是錯的。 我在文件src中得到了一個名爲NewClass的包,在包中的syntaxtest中。從SRC路徑I型:從終端運行java類

的javac的src/syntaxtest/NewClass.java

和類被編譯,我可以看到NewClass.class在syntaxtest文件夾中。現在從相同的路徑或甚至與NewClass.class相同的文件夾,我不知道如何從終端運行類。我已經做了很多不同的嘗試,但我醚得到

ClassDefNotFound或ClassDefNotFound(錯誤的名稱:syntaxtest /的NewClass)

+1

你試過「java NewClass」嗎?確保你的目錄在嘗試命令之前(以它的形式) – Andrew 2012-02-10 20:41:50

+0

當我在文件夾中嘗試java NewClass時,NewClass.class是我得到的ClassDefNotFound。如果我嘗試java syntaxtest.NewClass我得到ClassDefNotFound(錯誤的名稱:syntaxtest/NewClass)。當我嘗試這個名字時,我得到了NoClassDefFound ... – Giannis 2012-02-10 20:51:14

+0

「java -cp.NewClass」試試這個 – Andrew 2012-02-10 21:00:53

回答

7

試試 「java -cp src syntaxtest.NewClass」。也就是說,如果你有一個包含子文件夾(包)「syntaxtest」的文件夾「src」,並且類「NewClass」在「包語法測試」中,那麼上述命令將起作用。

$ ls src/syntaxtest 
NewClass.java 
$ cat src/syntaxtest/NewClass.java 
package syntaxtest; 
public class NewClass { 
    public static void main(String args[]) { 
    System.out.println("Hello, World!"); 
    } 
} 
$ javac src/syntaxtest/NewClass.java 
$ java -cp src syntaxtest.NewClass 
Hello, World! 
+0

nope不起作用。在這裏和那裏嘗試了幾個斜槓的變化,但仍然沒有。 – Giannis 2012-02-10 20:48:44

+0

@latusaki:我假設你的包名是「syntaxtest」;如果它是「src.syntaxtest」,那麼嘗試「java src.syntaxtest.NewClass'」。 – maerics 2012-02-10 20:52:48

+0

沒有src只是一個文件夾。裏面有另一個名爲syntaxtest的文件夾。然後是.java和.class文件。 NewClass在syntaxtest包中。很奇怪,我無法弄清楚如何打電話給班級。順便說一句,如果我從類中刪除包,所以它不在我可以稱之爲的任何包中。所以包裝肯定有問題。 – Giannis 2012-02-10 21:01:54

1

我做了如下測試:

  • 創建於家用/測試/嗒嗒的Java文件/ TestClass.java

    包等等;

    public class TestClass public static void main(String [] args){System.out.println(「Hello World!」); }}

  • 走到名錄主頁/測試/

  • 通過鍵入編譯文件:
javac blah/TestClass.java 
  • 得到編譯好的文件。
  • 運行它通過鍵入: 「Hello World」 的
java blah.TestClass 
  • 得到的消息如預期的那樣:程序運行正常。
  • 走到名錄主頁/
  • 試圖通過打字來運行:

Java測試/ blah.TestClass

  • ...等衆多斜線和點的組合.....沒有工作....繼續得到同樣的異常爲你:
java.lang.NoClassDefFoundError 

所以,在我看來,要運行使用命令「Java」作爲一個Java類,你真的必須在應用程序的根文件夾中。

0

我有類似的問題。 我想直接從Mac查找器中使用src和bin文件夾來組織我的項目,並使用Emacs或其他文本編輯器。我只是不喜歡日食。

您不能從另一個文件夾執行這些類,但是您可以執行的是從另一個文件夾編譯爲要執行的文件夾。

例如(假設沒有包),移動到bin文件夾,然後運行:

$ javac的../src/name.java -d ../bin/

(,編譯從src文件夾並直接在bin上輸出.class文件)