新Java开发人员遇到的一个常见问题是,他们的程序无法运行,并显示错误消息:无法找到或加载主类。。。
这意味着什么,是什么导致的,你应该如何解决?
新Java开发人员遇到的一个常见问题是,他们的程序无法运行,并显示错误消息:无法找到或加载主类。。。
这意味着什么,是什么导致的,你应该如何解决?
当前回答
这里的所有答案似乎都针对Windows用户。对于Mac,类路径分隔符是:,而不是;。作为一个错误,使用;如果从Windows到Mac,则很难发现。
下面是相应的Mac命令:
java -classpath ".:./lib/*" com.test.MyClass
在本例中,包是com.test,类路径中还包含一个lib文件夹。
其他回答
类文件位置:C:\test.com\company
文件名:Main.class
完全限定类名:com.company.Main
命令行命令:
java -classpath "C:\test" com.company.Main
请注意,类路径不包括.com\company。
我遇到了同样的问题,最终发现了我的错误:)我使用此命令进行编译,并且运行正常:
javac -cp "/home/omidmohebbi/AAAATest/jars/core-1.7.jar:/home/omidmohebbi/AAAATest/jars/javase-1.7.jar:/home/omidmohebbi/AAAATest/jars/qrgen-1.2.jar" qrcode.java
但这个命令对我不起作用(我找不到或加载主类qrcode):
java -cp "/home/omidmohebbi/AAAATest/jars/core-1.7.jar:/home/omidmohebbi/AAAATest/jars/javase-1.7.jar:/home/omidmohebbi/AAAATest/jars/qrgen-1.2.jar" qrcode
最后,我只在类路径末尾添加了“:”字符,问题就解决了:
java -cp "/home/omidmohebbi/AAAATest/jars/core-1.7.jar:/home/omidmohebbi/AAAATest/jars/javase-1.7.jar:/home/omidmohebbi/AAAATest/jars/qrgen-1.2.jar:" qrcode
使用关键字“package”
如果源代码中有package关键字(主类在包中定义),则应使用类的全名(packageName.MainClassName)在分层目录中运行它。
假设有一个源代码文件(Main.java):
package com.test;
public class Main {
public static void main(String[] args) {
System.out.println("salam 2nya\n");
}
}
要运行此代码,应将Main.Class放在类似于包的目录中:
C: \Users\workspace\testapp.com\test\Main.Java
然后将终端的当前目录更改为项目的根目录:
cd C:\Users\workspace\testapp
最后,运行代码:
java com.test.Main
没有关键字“package”
如果您的源代码名称中没有任何包,那么可能是您使用了错误的命令。假设您的Java文件名为Main.Java,编译后:
javac Main.java
编译后的代码将是Main.class
如果使用以下方法调用它,则会出现该错误:
java Main.class
相反,请使用以下方法:
java Main
我在做mvn eclipse后遇到了这个错误:eclipse。这有点搞乱了我的.classpath文件。
我不得不将.classpath中的行从
<classpathentry kind="src" path="src/main/java" including="**/*.java"/>
<classpathentry kind="src" path="src/main/resources" excluding="**/*.java"/>
to
<classpathentry kind="src" path="src/main/java" output="target/classes" />
<classpathentry kind="src" path="src/main/resources" excluding="**" output="target/classes" />
使用此命令:
java -cp . [PACKAGE.]CLASSNAME
示例:如果类名是从Hello.java创建的Hello.class,则使用以下命令:
java -cp . Hello
如果文件Hello.java位于com.demo包中,请使用以下命令
java -cp . com.demo.Hello
在JDK8中,类文件多次出现在同一文件夹中,但java命令需要类路径,因此我们添加了-cp。将当前文件夹作为类路径的参考。