hacker


Ingresar con nombre de usuario, contraseña y duración de la sesión
| Portal Hacker | Editorial | Descargas | Ezine |
Inicio Ayuda Ingresar Registrarse
15 de Octubre de 2008, 08:49:23
Noticias: Privacidad - ¿Necesitas que se depure cierta informacion en nuestro portal?
Para ver este enlace Registrate o Inicia Sesion
> leer aqui

+  Foros pOrtal Hacker
|-+  Programacion
| |-+  JAVA (Moderador: kamui23)
| | |-+  Argumentos <STDIN>
0 Usuarios y 1 Visitante están viendo este tema. « anterior próximo »
Páginas: [1] Ir Abajo Imprimir
Autor Tema: Argumentos <STDIN>  (Leído 1106 veces)
Universal SAC
NZ3
***
Desconectado Desconectado

Mensajes: 577


Universal SAC


Ver Perfil
« : 29 de Julio de 2006, 05:02:28 »

Buenas compadres...

Estoy "tratando" de iniciarme en JAVA, pero me está siendo bastante complicado, en POO solo he tocado un poquititititit ito de C++ y de VB, y la verdad esque ando muy perdido.
Tuve la ocurrencia de probar la impresión de los argumentos pasados desde <STDIN> en mi aplicación java; pero he tenido problemas :-(

Les probeo mi código:

Código:
/*
 * P1.java
 * Creado el 28 de julio de 2006, 21:32
 */

/**
 *
 * @autor universalsac
 */
public class P1 {
   
    /**Método principal*/
    public static void main(String args[]) {
        System.out.println("\nUniversal SAC\n");
        if(args[0]!=null){
            for(int i=0;args[i]!=null;i++){
                System.out.print(args[i]+"");
            }
        System.out.print("\n\n");
        }
    }
}

Estoy trabajando con NetBeans versión 5.0.
Cuando ejecuto el programa desde el IDE me da el normal (según he leido) aviso de excepción: java.lang.Arra yIndexOutOfBou ndsException y todo lo demás lo corre de la manera esperada... me gustaría probar a pasarle algunos argumentos al momento de ejecutar para que deje de darme este aviso.

Aquí un bonito screen de el IDE abierto con el programa escrito y el debugger dando lata:

Para ver este enlace Registrate o Inicia Sesion
http://img82.imageshack.us/img82/1594/exceptioncs3.jpg


Lo he probado desde la consola utilizando el intérprete gij directamente en la clase obteniendo estos resultados:

Código:
$ gij P1.class jojo jiji
Exception in thread "main" java.lang.NoClassDefFoundError: P1.class
   at gnu.java.lang.MainThread.run() (/usr/lib/libgcj.so.6.0.0)
Caused by: java.lang.ClassNotFoundException: P1.class not found in gnu.gcj.runtime.SystemClassLoader{urls=[file:./,file:./],
parent=gnu.gcj.runtime.ExtensionClassLoader{urls=[], parent=null}}
   at java.net.URLClassLoader.findClass(java.lang.String) (/usr/lib/libgcj.so.6.0.0)
   at java.lang.ClassLoader.loadClass(java.lang.String, boolean) (/usr/lib/libgcj.so.6.0.0)
   at java.lang.ClassLoader.loadClass(java.lang.String) (/usr/lib/libgcj.so.6.0.0)
   at java.lang.Class.forName(java.lang.String, boolean, java.lang.ClassLoader) (/usr/lib/libgcj.so.6.0.0)
   at gnu.java.lang.MainThread.run() (/usr/lib/libgcj.so.6.0.0)

Código:
$ gij P1 jojo jiji
Exception in thread "main" java.lang.NoClassDefFoundError: while resolving class: P1
   at java.lang.VMClassLoader.transformException(java.lang.Class, java.lang.Throwable) (/usr/lib/libgcj.so.6.0.0)
   at java.lang.VMClassLoader.resolveClass(java.lang.Class) (/usr/lib/libgcj.so.6.0.0)
   at java.lang.Class.initializeClass() (/usr/lib/libgcj.so.6.0.0)
   at java.lang.Class.forName(java.lang.String, boolean, java.lang.ClassLoader) (/usr/lib/libgcj.so.6.0.0)
   at gnu.java.lang.MainThread.run() (/usr/lib/libgcj.so.6.0.0)
Caused by: java.lang.ClassNotFoundException: java.lang.StringBuilder not found in gnu.gcj.runtime.SystemClassLoader{urls=[file:./,file:./],
parent=gnu.gcj.runtime.ExtensionClassLoader{urls=[], parent=null}}
   at java.net.URLClassLoader.findClass(java.lang.String) (/usr/lib/libgcj.so.6.0.0)
   at java.lang.ClassLoader.loadClass(java.lang.String, boolean) (/usr/lib/libgcj.so.6.0.0)
   at java.lang.ClassLoader.loadClass(java.lang.String) (/usr/lib/libgcj.so.6.0.0)
   at java.lang.Class.forName(java.lang.String, boolean, java.lang.ClassLoader) (/usr/lib/libgcj.so.6.0.0)
   ...4 more

Lo he probado también en el archivo .jar con resultados parecidos:

Código:
$ gij -jar Prueba.jar jojo jiji
Exception in thread "main" java.lang.NoClassDefFoundError: while resolving class: P1
   at java.lang.VMClassLoader.transformException(java.lang.Class, java.lang.Throwable) (/usr/lib/libgcj.so.6.0.0)
   at java.lang.VMClassLoader.resolveClass(java.lang.Class) (/usr/lib/libgcj.so.6.0.0)
   at java.lang.Class.initializeClass() (/usr/lib/libgcj.so.6.0.0)
   at java.lang.Class.forName(java.lang.String, boolean, java.lang.ClassLoader) (/usr/lib/libgcj.so.6.0.0)
   at gnu.java.lang.MainThread.run() (/usr/lib/libgcj.so.6.0.0)
Caused by: java.lang.ClassNotFoundException: java.lang.StringBuilder not found in gnu.gcj.runtime.SystemClassLoader{urls=[file:Prueba.jar,file:./],
parent=gnu.gcj.runtime.ExtensionClassLoader{urls=[], parent=null}}
   at java.net.URLClassLoader.findClass(java.lang.String) (/usr/lib/libgcj.so.6.0.0)
   at java.lang.ClassLoader.loadClass(java.lang.String, boolean) (/usr/lib/libgcj.so.6.0.0)
   at java.lang.ClassLoader.loadClass(java.lang.String) (/usr/lib/libgcj.so.6.0.0)
   at java.lang.Class.forName(java.lang.String, boolean, java.lang.ClassLoader) (/usr/lib/libgcj.so.6.0.0)
   ...4 more

Código:
$ gij -jar Prueba jojo jiji
Failed to load Main-Class manifest attribute from Prueba

La poca información que he buscado al respecto no me ha resuelto nada, y los errores, debido a mi falta de experiencia no me permiten obtener una solución o una explicación exacta de el error.
Espero y puedan ayudarme, pues realmente no se que hacer...

Un saludo a todos.
Gracias  cool

*EDITO*
Los errores que había colocado descuadraban el foro, así que le hice un salto de linea en algunas zonas...
« Última modificación: 29 de Julio de 2006, 05:05:12 por Universal SAC » En línea

~UNIVERSAL[HACK]
rafaelsk
Visitante
« Respuesta #1 : 30 de Julio de 2006, 05:19:58 »

Ok ese es un error muy sencillo, mire te explico, sea de donde sea que sacastes ese código esta MAL, porque el creador de ese codigo "piensa" que con ese if se asegura de que exista por lo menos un elemento en arreglo de strings args.

Pues esta mal, fijate, es posible que el arreglo de strings (args) no tenga absolutamente ninguna elemento, pero aun asi esta declarado, es como declarar un arreglo de 0 elementos, en ese caso no seria un error preguntar por args[0] si ese elemento no existe ? por eso obtienes el error IndexOutOfBoun dsExcpetion que significa que estas accesando a una posicion del arreglo que esta mas alla de los limites del mismo.

Entonces que hacemos ? Pues lo correcto segun yo seria preguntar mas bien por el LARGO del arreglo, de esta manera es mas eficiente, no presenta problemas e inclusive no hace falta el if.

Aqui te dejo el codigo modificado:
Código:
public class P1
{
   
    /**Método principal*/
    public static void main(String args[])
    {
        System.out.println("\nUniversal SAC\n");
           
        for(int i=0; i<args.length ;i++)
        {
        System.out.print(args[i]+"");
        }
        System.out.print("\n\n");
       
    }
}

En línea
Universal SAC
NZ3
***
Desconectado Desconectado

Mensajes: 577


Universal SAC


Ver Perfil
« Respuesta #2 : 05 de Agosto de 2006, 05:28:22 »

Citar
sea de donde sea que sacastes ese código esta MAL, porque el creador de ese codigo "piensa" que con ese if se asegura de que exista por lo menos un elemento en arreglo de strings args.

jeje, no lo he copiado de ningún lado, por eso está todo mal, jajaja... chale, me sacas mis trapitos al sol :-(

Ohh, ya lo voy entendiendo... y esque no había leido hacerca de esa propiedad "length" que tienen los arreglos. Muchas gracias rafaelsk :-D
 cool
En línea

~UNIVERSAL[HACK]
rafaelsk
Visitante
« Respuesta #3 : 29 de Agosto de 2006, 02:02:56 »

Estamos para ayudar viejo, a ver que mas podemos hacer con Java Cheesy
En línea
Páginas: [1] Ir Arriba Imprimir 
« anterior próximo »
Ir a:  


Ingresar con nombre de usuario, contraseña y duración de la sesión

Powered by SMF 1.1.6 | SMF © 2006-2008, Simple Machines LLC hacker

Juegos gratis - Articulos PHP - Juegos - Trucos - Letras - Juegos - Juegos Online