2010-03-24 24 views
5
package pack; 


public class sample{ 

public static void main(String input[]) 
    { 

     NumberFormat numberFormat = new DecimalFormat("#,##0.00##"); 
    System.out.println(numberFormat.format(44533125.00)); 

    } 
} 

el código funciona correctamente en el directorio actual .. (c:/myprogram /).Excepción en el hilo "principal" java.lang.NoClassDefFoundError

después de eso, copio el archivo sample.class y lo pego en otro directorio (d:/myprogram). i ha obtenido un error durante la ejecución, como

 
Exception in thread "main" java.lang.NoClassDefFoundError: sample (wrong name: pack/sample) 

En el archivo .class de Java se puede ejecutar en cualquier lugar correcto? pero ¿por qué no puedo correr?

+4

¿por qué es una wiki de la comunidad? – medopal

Respuesta

18

Debe tener el archivo de clase dentro del paquete, por lo que debe estar en un directorio llamado pack. Luego, con la guía de los padres en la ruta de clase, que había corrido

java pack.sample 

(También debe cambiar el nombre de la clase a la Muestra de seguir las convenciones, por cierto - y ejecutar pack.Sample.)

Si usted está construyendo con javac, especifique la opción "-d" para indicarle el directorio base, y creará la estructura del paquete apropiada si es necesario. Por ejemplo:

javac -d classes Sample.java 

o

javac -d classes src/pack/Sample.java 

será (en ambos casos) crear

classes/pack/Sample.class 

A continuación, puede ejecutar

java -cp classes pack.Sample 
+0

si ... funciona – Manu

-1

Si no está utilizando un único archivo java/clase también puede eliminar el paquete statemen t.

0

IntelliJ y tal vez otros IDE no refactorizan la configuración de ejecución/depuración. Debe cambiar manualmente el nombre de su paquete antes del nombre de su clase Principal. Por ejemplo, cambie 'sample.Main' a 'com.company.package.ui.Main' para que se inicie correctamente la próxima vez que intente ejecutarlo. El IDE ya pudo haber marcado el botón Ejecutar/Depurar con una cruz roja porque no pudo encontrar la clase principal. También da una advertencia cuando abre la configuración Ejecutar/Depurar.

Cuestiones relacionadas