Estoy intentando ejecutar una aplicación Java de ejemplo del comando promopt pero estoy consiguiendo el error siguiente:"No se pudo encontrar la clase principal"
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.
El comando que estoy usando para tratar de ejecutar esta aplicación es:
java -cp .;gdx.jar;gdx-backend-jogl.jar com.badlogic.gdx.helloworld.HelloWorldDesktop
Cuando todos los archivos pertinentes están en el directorio actual de trabajo (.java, .class y .jar)
el comando utilicé para construir los archivos .class fue el siguiente (hay 2 archivos .java):
javac -cp gdx.jar;gdx-backend-jogl.jar HelloWorld.java HelloWorldDesktop.java
De nuevo, esto se ha ejecutado desde el mismo directorio de trabajo - El contenido de HelloWorldDesktop.java
es (más o menos):
package com.badlogic.gdx.helloworld;
public class HelloWorldDesktop {
public static void main (String[] argv) {
// Application
}
}
Estoy intentando aprender Java como un desarrollador de C#, por lo Cuando tengo una sólida formación en conceptos de programación, toda la cadena de herramientas de Java me confunde por completo. La excepción indica que no se pudo encontrar la clase HelloWorldDesktop
, pero por lo que puedo decir, tengo el nombre correcto y he agregado los archivos .jar correctos a la ruta de la clase y, por lo tanto, Java debería poder cargar esto clase.
¿Por qué no puede encontrar HelloWorldDesktop
?
Gracias - tanto el uso de '' -d .' con javac' causó mi (de lo contrario no modificada) comandos para trabajar - con origen en un directorio superior con las rutas modificadas también funcionó Me preguntaba por qué la fuente de muestra estaba tan profundamente anidada, nunca se me ocurrió que la estructura de directorios de la fuente importó lo suficiente como para detener su ejecución. – Justin
Ah, acabo de decir que '-d .' hace que el compilador cree una serie de subdirectorios para usted. – Justin