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

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


当前回答

如果使用Maven构建JAR文件,请确保在pom.xml文件中指定主类:

<build>
    <plugins>
        <plugin>
            <artifactId>maven-jar-plugin</artifactId>
            <configuration>
                <archive>
                    <manifest>
                        <mainClass>class name us.com.test.abc.MyMainClass</mainClass>
                    </manifest>
                </archive>
            </configuration>
        </plugin>
    </plugins>
</build>

其他回答

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

文件名:Main.class

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

命令行命令:

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

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

如果使用IntelliJ并在从IDE运行main方法时出错,只需确保类位于java包中,而不是kotlin中

我在做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" />

似乎当我遇到这个问题时,它是独一无二的。

一旦我删除了文件顶部的包声明,它就完美地工作了。

除此之外,似乎没有任何方法在我的机器上运行简单的HelloWorld.java,无论编译发生在哪个文件夹,CLASSPATH或PATH,参数或调用的文件夹。

这是一个具体的案例:

Windows(通过Windows7测试)不接受类和包名称中的特殊字符(如á)。不过,Linux确实如此。

我在NetBeans中构建.jar并尝试在命令行中运行时发现了这一点。它在NetBeans中运行,但不在命令行上运行。