studio not initialize could java noclassdeffounderror

not - Recibiendo el "nombre equivocado" NoClassDefFoundError al ejecutar un programa Java desde la línea de comandos



java.lang.noclassdeffounderror xamarin (6)

Tengo un problema al intentar ejecutar mi aplicación java. Cada vez que intento ejecutar el programa a través del comando

java ProgAudioJ

Me sale este error:

Exception in thread "main" java.lang.NoClassDefFoundError: ProgAudioJ (wrong name: es_2011/ProgAudioJ) at java.lang.ClassLoader.defineClass1(NativeMethod) at java.lang.ClassLoader.defineClassCond(ClassLoader.java:632) at java.lang.ClassLoader.defineClass(ClassLoader.java:616) at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:141) at java.net.URLClassLoader.defineClass(URLClassLoader.java:283) at java.net.URLClassLoader.access$000(URLClassLoader.java:58) at java.net.URLClassLoader$1.run(URLClassLoader.java:197) at java.security.AccessController.doPrivileged(NativeMethod) at java.net.URLClassLoader.findClass(URLClassLoader.java:190) at java.lang.ClassLoader.loadClass(ClassLoader.java:307) at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301) at java.lang.ClassLoader.loadClass(ClassLoader.java:248) Could not find the main class: ProgAudioJ. Program will exit.

Si elimino de mi código:

package es_2011;

Todo funciona perfectamente. ¿Cómo resuelvo el problema?


Debido a que estas respuestas no están claras, esto es lo que debe hacer. Primero, si empaqueta su código (las clases compiladas tienen la palabra clave del package en la parte superior) las clases compiladas deben estar en un directorio con el mismo nombre que su declaración de paquete en el código. Una vez que haya compilado sus clases, deberá subir un directorio cuando ejecute el comando java e incluir el nombre del paquete . Por ejemplo, si su código existe en /myFolder/myPackage/ , y su clase comienza con el package myPackage (tenga en cuenta que el directorio y el paquete tienen el mismo nombre), entonces haría lo siguiente (linux / osx):

cd /myFolder/myPackage javac MyClass.java cd .. java myPackage.MyClass

Edición: una edición tardía para aclarar algo que veo confundir a la gente. En el ejemplo anterior, el paquete solo tiene una profundidad, lo que significa que es solo myPackage. Si el código tiene un paquete más grande, como

package com.somedomain.someproject;

deberá ejecutar el comando java desde el directorio que contiene el directorio raíz de ese paquete. Por ejemplo, si su código compilado está en myCode / com / somedomain / someproject / MyMainClass.class, entonces ejecutará el comando java desde la carpeta myCode, como esto (nuevamente, tenga en cuenta que la estructura del directorio es la misma que la del paquete declaración):

cd /myCode java com.somedomain.someproject.MyMainClass


Está claramente establecido allí:

java.lang.NoClassDefFoundError: ProgAudioJ (nombre incorrecto: es_2011 / ProgAudioJ)

Si desea poner una clase en un paquete (*), entonces el código fuente se debe colocar en un directorio correspondiente, por ejemplo,

src/Main.java <- root package (no declaration) src/es_2011/ProgAudioJ.java <- package es_2011;

(*) Debes hacerlo siempre, a excepción de las cosas pequeñas desechables y posiblemente de la clase principal.


La razón por la que funciona cuando se elimina
package es_2011
es que está cambiando la forma en que el compilador empaqueta y ubica efectivamente el archivo.

Tuve el mismo problema, y ​​el wrong name: error del mensaje de wrong name: hecho, le indica la respuesta. Está utilizando el nombre incorrecto "ProgAudioJ" para ejecutar el archivo .class. Ha sido empaquetado como

es_2011 / ProgAudioJ

Para ejecutarlo, tienes que mover un directorio:

Si está aquí: (Windows) src/es_2011/
mover a src/

A continuación, ejecute la línea:

java es_2011.ProgAudioJ

Esto le indica al compilador que busque ProgAudioJ, que reside en el paquete es_2011. Para una instalación estándar, esto se basará en carpetas, por lo que primero buscará la carpeta es_2011 y luego el nombre del archivo .class que desea ejecutar (ProgAudio).


Prueba esto (compila y ejecuta):

dir

2011-02-10 00:30 <DIR> . 2011-02-10 00:30 <DIR> .. 2011-02-10 00:27 58 es_2011

javac es_2011 / ProgAudioJ

java es_2011.ProgAudioJ


Prueba esto,

  1. Compila tu clase usando el siguiente comando

    $ javac ProgAudioJ.java -d .

  2. Ejecuta tu aplicación por comando

    $ java es_2011.ProgAudioJ


Trate de usar:

java es_2011.ProgAudioJ

(en lugar de java ProgAudioJ ).

Estoy haciendo algunas suposiciones aquí acerca de su directorio de trabajo actual y su CLASSPATH. Si puede proporcionar información sobre el comando que está ejecutando (por ejemplo, en qué directorio se encuentra, dónde se encuentra el archivo de clase, etc.), podemos ayudarlo de manera más eficiente.