我正在尝试通过Mac上的终端运行java程序,但得到:
Error: Could not find or load main class (MY CLASSNAME)
我用Eclipse编译了这个应用程序,当我用Eclipse运行它时,它工作正常。 此外,我在正确的目录中,因为当我在终端中键入“ls”时,它列出了所有文件,包括我试图运行的类文件。
这是我输入的内容:
java mainClass
我非常感谢帮助解决这个问题!
谢谢,
迪安
编辑:解决方案 - 而不是java mainClass,它也必须有包:java startPackage.mainClass
答案 0 :(得分:14)
首先确保您位于顶级package
如果该类属于package
com.foo.bar
,则您希望位于com
上方的目录中。
在您的情况下,您希望位于startPack
上方的目录中。
然后您需要使用完全限定名称来运行类...
java statPack.mainClass
例如......
答案 1 :(得分:4)
确保您的CLASSPATH中有当前目录。
java -cp . mainClass
要全局设置,您可以在export CLASSPATH=$CLASSPATH:.
内使用.bash_profile
。
另外,如果您的班级位于com.foo.bar
等软件包中,那么您需要转到com
的父目录并以完整路径运行您的应用程序。
java com.foo.bar.mainClass
答案 2 :(得分:2)
我在Mac机器上也遇到过这种情况,然后我必须做的就是:
我在项目的根目录下有一个xyz包,即src / main / java,然后在xyz包里面我有一个类Student.java
我当前的目录是/ Users / username / projectname / src / main / java / xyz: 我可以看到Student.java存在于此处 我使用javac Student.java
编译它现在我看到在这个位置创建了类文件。但是当我尝试使用java Student运行类文件时 我收到错误:错误:无法找到或加载主类学生
现在解决方案是在目录中退一步并转到根路径:/ Users / username / projectname / src / main / java并运行命令
它会起作用。
答案 3 :(得分:0)
对于像我这样愚蠢的人,请确保您输入java HelloWorld
-并不 java HelloWorld.class
-运行名称为HelloWorld.class
的编译文件。如果您习惯按Tab键完成文件名,则尤其如此,因为如果您在键入java HelloWorld.class
之类的内容后按Tab键进行自动完成,则终端会给您java He
。
此答案在这里,因为在我弄清楚自己做错了什么之前,它花了3个站点(包括此答案)和25个警告。
逻辑简单,输入困难。
答案 4 :(得分:0)
使用绝对路径也可以解决这个问题:
java -classpath /Users/xingliu/IdeaProjects/springproject/src/main/java/ startPackage.mainClass