新Java开发人员遇到的一个常见问题是,他们的程序无法运行,并显示错误消息:无法找到或加载主类。。。

这意味着什么,是什么导致的,你应该如何解决?


当前回答

类文件位置:C:\test.com\company

文件名:Main.class

完全限定类名:com.company.Main

命令行命令:

java  -classpath "C:\test" com.company.Main

请注意,类路径不包括.com\company。

其他回答

在命令行上指定类路径对我有帮助。例如:

创建新文件夹C:\temp在C:\Temp中创建Temp.java文件,其中包含以下类:公共类温度{公共静态void main(字符串参数[]){System.out.println(args[0]);}}打开C:\temp文件夹中的命令行,并编写以下命令以编译temp类:javac Temp.java运行编译后的Java类,添加-classpath选项,让JRE知道在哪里可以找到该类:java-classpath C:\tempTemp您好!

默认情况下,Java使用。,当前工作目录,作为默认CLASSPATH。这意味着,当您在提示符处键入命令(例如javaMyClass)时,该命令将被解释为您键入了java-cp。我的班级。你看到-cp和MyClass之间的点了吗?(cp是较长类路径选项的缩写)

这在大多数情况下都是足够的,在您尝试向CLASSPATH添加目录之前,一切似乎都很正常。在大多数情况下,当程序员需要这样做时,他们只需运行一个命令,比如set CLASSPATH=path \to\some\dir。此命令创建一个名为CLASSPATH的新环境变量,该变量的值为path\to\some\dir,或者如果以前已设置CLASSPATH,则将其值替换为path \to\sme\dir。

完成后,您现在有了一个CLASSPATH环境变量,Java不再使用默认的类路径(.),而是使用您设置的类路径。所以第二天你打开编辑器,写一些java程序,cd到你保存它的目录,编译它,并尝试用命令javaMyClass运行它,你会得到一个很好的输出:找不到或加载主类。。。(如果您的命令以前工作得很好,现在得到了这个输出,那么您可能就是这样)。

发生的情况是,当您运行命令javaMyClass时,java会在CLASSPATH中设置的一个或多个目录中搜索名为MyClass的类文件,而不是当前工作目录,因此在那里找不到您的类文件并因此发出抱怨。

你需要做的是添加。这可以通过命令集CLASSPATH=%CLASSPATH%;来完成;。(注意分号后的点)。在纯英语中,此命令表示“选择CLASSPATH(%CLASSPATH%)的初始值,将.添加到(;.),并将结果分配回CLASSPATH”。

瞧,您再次能够像往常一样使用命令javaMyClass。

在IDE开发环境中(Eclipse、NetBeans或其他),您必须将项目财产配置为具有主类,以便IDE知道当您单击“Play”时要执行的主类的位置。

右键单击项目,然后单击财产转到跑步类别并选择您的主类别点击Run(运行)按钮。

这基本上意味着没有静态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");
    }
}

这就是我解决问题的方法。

我注意到,如果在编译中包含jar文件,那么将当前目录(./)添加到类路径中会有帮助。

javac -cp "abc.jar;efg.jar" MyClass.java
java -cp "abc.jar;efg.jar" MyClass

vs.

javac -cp "**./**;abc.jar;efg.jar" MyClass.java<br>
java -cp "**./**;abc.jar;efg.jar" MyClass