Java命令行编译
我最近用Netbeans和Java完成了一项编程任务。当我在Netbeans中运行该程序时,一切都运行得非常完美。当我尝试从终端运行它时,我的问题出现了。我用所有的.java文件运行javac,它为每个文件生成一个.class文件。然后,当我尝试运行可执行文件时,它会在我身上出错Java命令行编译,java,command-line,compilation,terminal,Java,Command Line,Compilation,Terminal,我最近用Netbeans和Java完成了一项编程任务。当我在Netbeans中运行该程序时,一切都运行得非常完美。当我尝试从终端运行它时,我的问题出现了。我用所有的.java文件运行javac,它为每个文件生成一个.class文件。然后,当我尝试运行可执行文件时,它会在我身上出错 ls Board.java KenKenPuzzleSolver.java Solver.java Cage.java Size.java Values.jav
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 kenpuzzlesolver input.txt output.txt”,我不太确定如何执行此操作。为什么不使用netbeans生成一个可执行文件?您不必每次都编译代码
input.txt
和output.txt
称为参数。它们将存储在main
函数中的String[]args
数组中。您没有提供classpath参数
使用
javac-cp YOURCLASSPATH KenKenPuzzleSolver
运行的类应该是公共的,并且应该具有与文件名相同的类名。您的文件名似乎是“KenPuzzleSolver”,但您的类名似乎是“KenPuzzleSolver”(注意小写的ken)。更正该错误,然后重新编译并重新运行。您一定弄乱了案例,从错误中可以看出,它显然不是KenKenPuzzleSolver
您已在KenKenPuzzleSolver.java
中将类命名为kenpuzzlesolver
。请阅读更多有关CLASSPATH
的角色和静态main
方法的参数的信息。有关javac
的更多信息,请输入manjavac
。阅读它,它很可能会解决您的问题。您遇到了一个程序包问题,您的KenPuzzleSolver似乎实际上是KenPuzzleSolver。KenPuzzleSolver(程序包内)检查您的程序包声明,如果是,您需要落后一个目录并执行javakenpuzzlesolver.kenkenpuzzlesolver
。