新Java开发人员遇到的一个常见问题是,他们的程序无法运行,并显示错误消息:无法找到或加载主类。。。
这意味着什么,是什么导致的,你应该如何解决?
新Java开发人员遇到的一个常见问题是,他们的程序无法运行,并显示错误消息:无法找到或加载主类。。。
这意味着什么,是什么导致的,你应该如何解决?
当前回答
类文件位置:C:\test.com\company
文件名:Main.class
完全限定类名:com.company.Main
命令行命令:
java -classpath "C:\test" com.company.Main
请注意,类路径不包括.com\company。
其他回答
在搜索了两天后,我找到了这个解决方案,并成功了。这很奇怪,但它对我有用。
package javaapplication3;
public class JavaApplication3 {
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
// TODO code application logic here
System.out.println("Hello");
}
}
这是我要运行的程序,位于C:\Java Projects\JavaApplication3\src\JavaApplication3
现在在此位置打开cmd并使用此命令编译程序
javac JavaApplication3.java
编译完成后,向下导航一个目录,即C:\Java Projects\JavaApplication3\src
现在运行以下命令以执行程序
java javaapplication3.JavaApplication3
如果源代码名为HelloWorld.java,则编译代码将为HelloWorld.class。
如果使用以下方法调用它,则会出现该错误:
java HelloWorld.class
相反,请使用以下方法:
java HelloWorld
这基本上意味着没有静态main(String[]args)方法。它应该自动解决。如果没有,那么当程序被制作(它没有主方法)或程序被打包(清单信息不正确)时,就会出现问题
这是可行的
public class Hello {
public static void main(String[] args) {
System.out.println("Hello");
}
}
这行不通
public class Hello {
public Hello() {
System.out.println("Hello");
}
}
这是另一个花费了我一点时间的问题:命令行类路径参数的行为与您预期的不同。我在MacOS上直接调用CLI,并且在调用中包含两个jar。
例如,这两个都让工具混淆了主类的名称:
这是因为星号导致它错误地解析参数:
java-cp路径/to/jars/*com.mypackage.Main
这是因为我不知道为什么:
java-cp“*.jar”com.mypackage.Main
这是有效的:
java-cp“path/to/jars/*”com.mypackage.Main
显式列出两个jar也有效:
java-cp路径/to/jars/jar1.jar:路径/to/jar/jar2.jar com.mypackage.Main
首先使用此命令设置路径;
set path="paste the set path address"
然后需要加载程序。在存储的驱动器中键入“cd(文件夹名)”并编译它。例如,如果我的程序存储在D驱动器上,请键入“D:”,然后按enter键并键入“cd”(文件夹名称)。