2011-07-12 28 views
5

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?

Respuesta

7

derecha - el problema es que tienes HelloWorldDesktop.class en el directorio actual, mientras que debería estar en com/badlogic/gdx/holamundo

Puedes solucionar este problema con el comando javac - sólo tiene que utilizar para contar -d . para tratar "". como el directorio raíz del paquete para la salida.

Normalmente querría también organice su código fuente por paquete, pero para esta prueba de "mundo hello" puede que no valga la pena.

+0

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

+0

Ah, acabo de decir que '-d .' hace que el compilador cree una serie de subdirectorios para usted. – Justin

1

Ok, primero que todo lo que necesita para compilar y ejecutar la aplicación utilizando dos herramientas diferentes

Paso 1: javac.exe que compila los archivos .java en archivos .class. Ejemplo: javac.exe ProgramFolder \ java * (donde ProgramFolder = Directorio File System)

continuación

. Paso 2: java.exe y dar como parámetro de la aplicación que desea ejecutar, incluyendo la ruta, pero en su lugar de usar "\" para carpetas, use "." y el nombre de su clase Ejemplo: ProgramFolder.ClassProgram

Eso funcionará. si intenta ejecutar Java.exe ProgramFolder \ Program.class o simplemente ProgramFolder \ Program o vaya a la carpeta donde están los archivos de clase y solo lo hace Java.exe Program.class, siempre le dará el error can not Main class.

Tenga una mirada en las 2 primeras líneas de esta imagen http://3.bp.blogspot.com/-FO4Hmg9LrI0/Td7FoSIi_XI/AAAAAAAAF6g/FVAiP0h8CSc/s1600/fiborial_java.PNG

+0

¿Qué debo hacer si no tengo javac.exe? – Fuser97381

+1

es probable que solo tenga el JRE. Debe descargar el JDK e instalarlo, que le proporcionará el compilador java jac.exe. Obtenlo de: http://www.oracle.com/technetwork/java/javase/downloads/index.html –

Cuestiones relacionadas