2012-10-07 191 views
0

我最近使用Netbeans和Java完成了一個編程任務。當我在Netbeans上運行程序時,一切都運行完美。當我嘗試從終端運行它時,我的問題就出現了。我用所有的.java文件運行javac,併爲每個文件生成一個.class文件。然後當我嘗試運行可執行文件時,它出錯了。Java命令行編譯

ls 
Board.java   KenKenPuzzleSolver.java 
Solver.java   Cage.java 
Size.java   Values.java 

javac KenKenPuzzleSolver.java Board.java Cage.java Size.java Solver.java Values.java 

ls 
Board.class   Size.class 
Board.java   Size.java 
Cage.class   Solver.class 
Cage.java   Solver.java 
KenKenPuzzleSolver.class Values.class 
KenKenPuzzleSolver.java  Values.java 

java KenKenPuzzleSolver 
Exception in thread "main" java.lang.NoClassDefFoundError: KenKenPuzzleSolver (wrong name: kenkenpuzzlesolver/KenKenPuzzleSolver) 

此外,當程序從終端運行它應該在輸入文件和輸出文件的名稱,即「Java的KenKenPuzzleSolver input.txt中output.txt的」,我不太清楚如何去做這個。

+2

閱讀更多關於'CLASSPATH'和參數到'static main'方法的作用。 –

+1

有關'javac'的更多信息,請輸入'man javac'。閱讀它,它很可能解決你的問題。 – elyashiv

+0

你有一個軟件包問題,看來你的KenKenPuzzleSolver實際上是kenkenpuzzlesolver.KenKenPuzzleSolver(在包kenkenpuzzlesolver中)檢查你的軟件包聲明,如果是這樣,你需要來一個目錄後面並執行'java kenkenpuzzlesolver.KenKenPuzzleSolver'。 –

回答

0

爲什麼不用netbeans生成可執行文件?你不必每次都編譯你的代碼。

input.txtoutput.txt被稱爲參數。它們將被存儲在String[] args數組中的main函數中。

0

您沒有提供classpath參數。

使用javac -cp YOURCLASSPATH KenKenPuzzleSolver

0

您正在運行的應該是公開的,並應具有類名相同的文件名的類。看起來你的文件名是「KenKenPuzzleSolver」,但是你的類名似乎是「KenkenPuzzleSolver」(觀察小寫的肯)。糾正並重新編譯並重新運行。

0

你一定弄錯了個案,從錯誤它的明顯而不是KenKenPuzzleSolver你已經命名你的類kenkenpuzzlesolverKenKenPuzzleSolver.java