2012-05-11 12 views
20

He escrito un programa simple paquete:¿Cómo compilar paquetes en Java?


//A simple package 

     package MyPack 


     class Balance 
     { 
     String name; 
     double bal; 

     Balance(String n, double b) 
     { 
      name=n; 
        bal=b; 
      } 

     void show() 
      { 
      if(bal<0) 
      System.out.println("-->"); 
      System.out.println(name+ ": $:" +bal); 
     } 
     } 

     class AccountBalance 
     { 
      public static void main(String args[]) 
      { 
         Balance current[]=new Balance[3]; 
        current[0]=new Balance("A.K.Juwatkar",123.123); 
        current[1]=new Balance("A.P.Dhoke",345.67); 
        current[2]=new Balance("Anil Sarang",100.98); 

        for(int i=0;i<3;i++) 
       current[i].show(); 
       } 
     } 

estoy usando Ubuntu 10.04 & cuando compilo usando

java MyPack.AccountBalance 

me sale el siguiente mensaje:

Exception in thread "main" java.lang.NoClassDefFoundError: MyPack/AccountBalance 
Caused by: java.lang.ClassNotFoundException: MyPack.AccountBalance 
    at java.net.URLClassLoader$1.run(URLClassLoader.java:217) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at java.net.URLClassLoader.findClass(URLClassLoader.java:205) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:321) 
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:294) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:266) 
Could not find the main class: MyPack.AccountBalance. Program will exit. 

¿Qué pasa? Por favor, ayúdame. He instalado openjdk, ¿necesito instalar algo más? estoy usando Ubuntu 10.04, por favor me ayude a cabo

+0

¿Ha importado mypack. ¿Desempeño en Saldo de cuenta? –

+0

http://shivasoft.in/blog/java/compile-and-run-java-program-in-package-from-command-line/ – Maddy

+0

http://www.ntu.edu.sg/home/ehchua/ programación/java/J9c_PackageClasspath.html –

Respuesta

35

es mejor para compilar y ejecutar las clases de fuera de los paquetes:

En primer lugar se compila con javac:

$javac MyPack/AccountBalance.java 

Esto creará un nuevo archivo en la carpeta llamada MyPack AccountBalance.class

continuación, se puede ejecutar:

$java MyPack.AccountBalance 

Por cierto: se desaconseja que los nombres de los paquetes comiencen con un capital.

+0

Muchas gracias funcionó .... muchas gracias – user1388626

5

intenta crear la carpeta llamada MyPack y mover archivos .class en ella o el uso siguiente línea de comandos para compilar el código Java y mueve los archivos .class en MyPack carpeta.

javac YourFileName.java -d . 

y ejecutar utilizando,

java MyPack.AccountBalance 

Tenga una mirada en javac herramienta

Desde el doc herramienta: Por defecto, el compilador coloca cada archivo de clase en el mismo directorio que su archivo fuente. Puede especificar un directorio de destino por separado con -d (consulte Opciones, a continuación).

y package tutorial.

+0

I compilado por AccountBalance.java javac tiene ningún error no Pero cuando traté de correr usando java MyPack.AccountBalance me dieron el siguiente error: – user1388626

+0

@ user1388626 Es necesario crear Carpeta MyPack y mueve Balance.class y AccountBalance.class en él. O use el interruptor -d para que la herramienta javac cree la carpeta del paquete. – adatapost

+0

He colocado el archivo AccountBalance.java en la carpeta MyPack – user1388626

11

Cuando intente compilar la clase java, use la opción '-d' (destino) para especificar dónde deben ubicarse los archivos .class.

javac -d "classes" AccountBalance.java 

y cuando se ejecuta el programa, asegúrese de que la misma carpeta está incluido en la ruta de clase:

java -classpath "classes" MyPack.AccountBalance 
2

Si está con frecuencia compilar y ejecutar a través de javac y java comandos a continuación, utilizar

javac MyJavaClass.java && java MyJavaClass 

Esto compilará la clase y luego ejecutará la clase que acaba de compilar.

Nota: Reemplace && con ; si usa Windows powershell.

+0

con el comando 'java' no es necesario especificar la extensión' .class', sino solo el nombre de clase completo de la clase que contiene el método 'main' – user2340612

+1

@ user2340612 Ok, gracias, corregidos. –

+0

Windows también usa esta sintaxis. – Nahiyan

Cuestiones relacionadas