Java &引用;找不到主类“;
我试图从命令promot运行示例Java应用程序,但出现以下错误:Java &引用;找不到主类“;,java,classpath,classnotfoundexception,Java,Classpath,Classnotfoundexception,我试图从命令promot运行示例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.
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文件):
这也是从同一工作目录运行的-HelloWorldDesktop.java的内容(或多或少):
我试图作为一名C#开发人员学习Java,因此,尽管我在编程概念方面有很强的背景,但整个Java工具链目前完全让我困惑。异常表明找不到类HelloWorldDesktop
,但据我所知,我已经获得了正确的名称,并且已将正确的.jar文件添加到类路径中,因此Java应该能够加载该类
为什么它找不到
HelloWorldDesktop
?对-问题是当前目录中有HelloWorldDesktop.class
,而它应该在com/badlogic/gdx/helloworld中
您可以使用javac命令解决这个问题-只需使用-d.
告诉它将“.”作为输出的包根目录
通常情况下,您也会希望按包组织源代码,但对于这个“hello world”测试,可能不值得这样做。好的,首先您需要编译应用程序,然后使用两种不同的工具运行应用程序 步骤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,则始终会出现找不到主类错误
看看这张图片的前两行谢谢-都使用了
-d.
和javac
使我的(未修改的)命令起作用-从更高的目录运行,修改路径也起作用。我想知道为什么示例源代码嵌套得如此之深,我从来没有想到源代码的目录结构足以阻止它的执行。啊,我刚刚把-d.
推到编译器为您创建了一系列子目录。如果我没有javac.exe,我该怎么办?您可能只有JRE。您需要下载并安装JDK,这将为您提供javac.exe java编译器。从以下位置获取:
javac -cp gdx.jar;gdx-backend-jogl.jar HelloWorld.java HelloWorldDesktop.java
package com.badlogic.gdx.helloworld;
public class HelloWorldDesktop {
public static void main (String[] argv) {
// Application
}
}