Ver Mensaje Individual
  #1 (permalink)  
Antiguo 20/11/2015, 13:04
Avatar de BramSt
BramSt
 
Fecha de Ingreso: abril-2015
Mensajes: 117
Antigüedad: 9 años, 8 meses
Puntos: 5
Un par de problemas con los archivos JAR en Eclipse

Hola a todos, muy buenas,

Estoy dando mis primeros pasos con este IDE, ya que estoy en 1º de Desarrollo de Aplicaciones Web.

Ahora nos han estado enseñando a hacer nuestras propias clases, y comprimirlas (o no) en un JAR para reutilizar esos métodos en otros proyectos...

Pero se me han presentado un par de problemas. En este hilo trataré sólo uno.

-El primero, es que nuestro profesor nos dió a principio de curso un JAR que lee numeros por teclados. La única manera de hacerlo por mí mismo que sé es con scanner, pero nunca la he utilizado.

El tema es que yo he creado una función llamada LeerNumeroYValidar y que incluye su JAR, tal como sigue:


Código Java:
Ver original
  1. package claseprimera; //nombre del pakete se elige en el asistente
  2.  
  3. import utilidades.Leer; //este es el jar con la clase que nos dio el profesor.
  4.  
  5.  
  6. public class Numero
  7. {
  8.  
  9.     /**
  10.      * <b>metodo que lee numero y valida</b>
  11.      * @param texto será el texto de entrada
  12.      * @param numeroValidante número que rompe la condición
  13.      * @return el número leído y validado
  14.      */
  15.     public static int LeerNumeroYValidar(String texto, int numeroValidante)
  16.     {
  17.         int numeroAValidar;
  18.        
  19.        
  20.         while (true)
  21.         {
  22.             System.out.println(texto);
  23.             numeroAValidar = Leer.leerInt(); //aqui utilizo el JAR del profe
  24.            
  25.            
  26.             if (numeroAValidar >= numeroValidante)
  27.             {
  28.                 break;
  29.             }
  30.            
  31.             System.out.println("El número debe ser igual o mayor a " + numeroValidante);
  32.         }
  33.        
  34.         return numeroAValidar;
  35.        
  36.        
  37.     }
  38. }

¿Qué ocurre? Que cuando intento utilizar la clase Numero en otro proyecto, por ejemplo:

Código Java:
Ver original
  1. import claseprimera.Numero;
  2.  
  3.  
  4. public class Main {
  5.  
  6.     /**
  7.      * @param args
  8.      */
  9.     public static void main(String[] args) {
  10.        
  11.         int numero=Numero.LeerNumeroYValidar("mete numero", 0);
  12.  
  13.     }
  14.  
  15. }

Me salta este error:

Código Java:
Ver original
  1. mete numero
  2. Exception in thread "main" java.lang.NoClassDefFoundError: utilidades/Leer
  3.     at claseprimera.Numero.LeerNumeroYValidar(Numero.java:27)
  4.     at Main.main(Main.java:11)
  5. Caused by: java.lang.ClassNotFoundException: utilidades.Leer
  6.     at java.net.URLClassLoader.findClass(Unknown Source)
  7.     at java.lang.ClassLoader.loadClass(Unknown Source)
  8.     at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
  9.     at java.lang.ClassLoader.loadClass(Unknown Source)
  10.     ... 2 more

Como veis, la clase se ejecuta (en la línea 1 tenéis el texto "mete número", pasado por parámetro), y, aunque es evidente que el error es que debo referenciar también el JAR de mi profesor -y no sólo el que contiene la clase Numero-, para que todo vaya correctamente, mi profesor comenta que no debería ser necesario incluir su JAR para que se pueda usar mi función. Como hemos tenido mucho lío con los exámenes y tampoco quiero acudir a él con todos los problemas (como bien dice él, en Programación a veces hay que buscarse la vida), me gustaría, antes de acudir a él, saber si podéis ayudarme y decirme en qué estoy fallando.

Repito que si añado su JAR funciona correctamente, y quizá es que se pueda comprimir también su JAR en mi propio JAR y yo no sé hacerlo... No sé.

Un saludo.