“无法找到主类”

时间:2011-07-12 10:19:28

标签: java classpath classnotfoundexception

我正在尝试从命令promopt运行示例Java应用程序,但是我收到以下错误:

Exception in thread "main" java.lang.NoClassDefFoundError: com/badlogic/gdx/helloworld/HelloWorldDesktop
Caused by: java.lang.ClassNotFoundException: com.badlogic.gdx.helloworld.HelloWorldDesktop
        at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
        at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
Could not find the main class: com.badlogic.gdx.helloworld.HelloWorldDesktop.  Program will exit.

我用来尝试运行此应用程序的命令是:

java -cp .;gdx.jar;gdx-backend-jogl.jar com.badlogic.gdx.helloworld.HelloWorldDesktop

所有相关文件都在当前工作目录中(.java,.class和.jar文件)

我用来构建.class文件的命令如下(有2个.java文件):

javac -cp gdx.jar;gdx-backend-jogl.jar HelloWorld.java HelloWorldDesktop.java

同样,这是从同一个工作目录运行的 - HelloWorldDesktop.java的内容是(或多或少):

package com.badlogic.gdx.helloworld;

public class HelloWorldDesktop {
    public static void main (String[] argv) {
        // Application
    }
}

我正在尝试将Java作为C#开发人员学习,所以我有很强的编程概念背景,整个java工具链目前让我很困惑。该异常表示无法找到类HelloWorldDesktop,但据我所知,我已经得到了正确的名称,并且我已经将正确的.jar文件添加到类路径中,因此Java应该是能加载这个类。

为什么找不到HelloWorldDesktop

2 个答案:

答案 0 :(得分:7)

对 - 问题是你在当前目录中有HelloWorldDesktop.class,而它应该在com / badlogic / gdx / helloworld中

您可以使用javac命令解决此问题 - 只需使用-d .告诉它处理“。”作为输出的包根目录。

通常你会希望按包来组织你的源代码,但对于这个“hello world”测试,它可能不值得。

答案 1 :(得分:1)

好的,首先你需要编译然后使用两个不同的工具运行应用程序

步骤1:javac.exe将.java文件编译为.class文件。 示例:javac.exe ProgramFolder \ * .java(其中ProgramFolder =文件系统目录)

然后

第2步:java.exe并将要运行的应用程序作为参数提供,包括路径,但不使用“\”作为文件夹使用“。”以及你班级的名字 示例:ProgramFolder.ClassProgram

那会有效。如果您尝试运行Java.exe ProgramFolder \ Program.class或只是ProgramFolder \ Program或进入类文件所在的文件夹,并且只执行Java.exe Program.class,它将始终为您提供无法找到Main类错误。< / p>

查看此图片的前两行http://3.bp.blogspot.com/-FO4Hmg9LrI0/Td7FoSIi_XI/AAAAAAAAF6g/FVAiP0h8CSc/s1600/fiborial_java.PNG