我试图从命令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
?
感谢的 - 无论是使用'-D .'用'javac'引起我的(未修改的)命令的工作 - 从一个更高的目录中变更路径运行也工作。我想知道为什么示例源代码嵌套得如此之深,我从未想到源代码的目录结构足够重要,无法执行。 – Justin
嗯,我只是指出'-d .'让编译器为你创建了一系列的子目录。 – Justin