我正在尝试从命令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
?
答案 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