我对java不太熟悉,这让我发疯。我编写了一个java程序FileManagement
,我需要从命令行运行它。
我可以使用javac FileManagement/*.java
从命令行编译它,这将创建该文件夹中的所有类,但是当我尝试java FileManagement.Main
时,它会说:
线程“main”中的异常java.lang.NoClassDefFoundError: FileManagement /主要
问题是我在远程计算机上尝试过相同的程序并且工作正常。它不适合我的。
答案 0 :(得分:21)
如果您的Main
课程位于名为FileManagement
的论坛中,请尝试:
java -cp . FileManagement.Main
在FileManagement
文件夹的父文件夹中。
如果您的Main
类不在包(默认包)中,那么 cd 到FileManagement
文件夹并尝试:
java -cp . Main
有关CLASSPATH以及JRE如何查找类的更多信息:
答案 1 :(得分:6)
伙计们让我们理解它的语法。
如果当前目录中存在类文件。
java -cp。文件名强>
如果Dir中存在类文件。转到Parent Dir并在cmd下面输入。
java -cp。 dir1.dir2.dir3.fileName 强>
如果对外部罐子有依赖,那么
java -cp。:。/ jarName1:./ jarName2 fileName
希望这会有所帮助。
答案 2 :(得分:3)
(这是KISS的回答。)
假设您在当前目录中有几个.java文件:
$ ls -1 *.java
javaFileName1.java
javaFileName2.java
假设他们每个人都有一个main()
方法(所以他们是程序,而不是libs),然后编译它们:
javac *.java -d .
这将生成与.java文件关联的“包”一样多的子文件夹。在我的情况下,所有java文件都在同一个包名packageName
下,因此只生成了一个具有该名称的文件夹,所以要执行每个文件夹:
java -cp . packageName.javaFileName1
java -cp . packageName.javaFileName2
答案 3 :(得分:1)
您班级的包裹名称是什么?如果没有包名,那么解决方案很可能是:
java -cp FileManagement Main