Ver Mensaje Individual
  #1 (permalink)  
Antiguo 24/11/2009, 00:51
oscarmoal
 
Fecha de Ingreso: marzo-2008
Mensajes: 63
Antigüedad: 16 años, 10 meses
Puntos: 0
Pregunta problema con un JAVA.LANG.NoClassDefFoundError

Buenas a todos

Ojalá puedan darme una mano, estoy creando una aplicación que cada cierto tiempo buscará en dos directorios archivos de un cierto tipo que fueron creados hace más de 3 días, cuando ejecuto mi programa en windows me va muy bien, pero cuando cambio de plataforma y ejecuto mi archivo jar me devuelve el siguiente error JAVA.LANG.NoClassDefFoundError, especificamente en la línea 20 (nameFilter filtera = new nameFilter(strFiltera)) no entiendo porque sale esta excepción, pero seguramente ustedes si, le dejo el código

Código:
import java.text.SimpleDateFormat; 
import java.io.*;
import java.util.*;

class sigue extends Thread
{
   private boolean running = true;
   
   public sigue() {}

   public void run()
   {
      String strFiltera = "MTL";
      String strFilea = "C:/TOLEDO";
      String strFilterb = "MTL";
      String strFileb = "C:/BZB/SXCASH/T";
      //C:/BZB/SXCASH/T
      while (running)
      {
         nameFilter filtera = new nameFilter(strFiltera);
         findFiles (new File(strFilea), filtera);
         nameFilter filterb = new nameFilter(strFilterb);
         findFiles (new File(strFileb), filterb);
         System.out.println("Depurando archivos MTL...");
         System.out.println("");
         try
         {
            Thread.sleep(10000);
         }
         catch (InterruptedException e)
         {
            running = false;
         }

      }
   }
   
   public static void main(String[] args) throws IOException
   {
      new sigue().start();
   }

   private class nameFilter implements FileFilter
   {
      
      private String mask;
      nameFilter(String mask)
      {
         this.mask = mask;
      }
      
      public boolean accept(File file)
      {
         Date dateModification = new Date(file.lastModified());
         SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
         String fecha = sdf.format(dateModification);
         String d1, m1, a1;
         int n1, n2, n3, n4, n5, n6;
         d1 = fecha.substring(0,2);
         m1 = fecha.substring(3,5);
         a1 = fecha.substring(6,10);
         n1 = Integer.parseInt(d1);
         n2 = Integer.parseInt(m1);
         n3 = Integer.parseInt(a1);
         
         Calendar calendario = Calendar.getInstance();
         int d2, m2, a2;
         d2 = calendario.get(Calendar.DAY_OF_MONTH);
         String d3, m3;
         d3 = String.valueOf(d2);
         if (d3.length() < 2)
         {
            d3 = "0" + d3;
         }
         m2 = calendario.get(Calendar.MONTH);
         m2 = m2 + 1;
         m3 = String.valueOf(m2);
         if (m3.length() < 2)
         {
            m3 = "0" + m3;
         }
         a2 = calendario.get(Calendar.YEAR);
         n4 = Integer.parseInt(d3);
         n5 = Integer.parseInt(m3);
         n6 = a2;
         double date1 = toJulian(new int[]{n3,n2,n1});
         double date2 = toJulian(new int[]{n6,n5,n4});
         double resta = date2 - date1;
         int res = (int)resta;
         //System.out.println("Entre " + dates + " y " + " hay: " + res + " dias");
         
         if (file.getName().length() > 1)
         {
            return file.getName().startsWith(mask) && res > 2;
         }
         return false;
      }
   }
   
   public static void findFiles(File file, FileFilter filter)
   {
      if (file.isDirectory())
      {
         File[] list = file.listFiles(filter);
         for (int i = 0; i < list.length; i++)
         {
            findFiles(list[i], filter);
         }
      }
      else
      {
         try
         {
            System.out.println("Mi archivo" + file.getPath() + " Puedo borrarlo si quiero");
            //file.delete();
         }
         catch (Exception e)
         {
            System.out.println("Rayos algo paso");
         }
      }
   }

   public static int JGREG= 15 + 31*(10+12*1582);
   public static double HALFSECOND = 0.5;
   
   public static double toJulian(int[] ymd) 
   {
      int year=ymd[0];
      int month=ymd[1]; // jan=1, feb=2,...
      int day=ymd[2];    
      int julianYear = year;
      if (year < 0) julianYear++;
      int julianMonth = month;
      if (month > 2) 
      {
         julianMonth++;
      }
      else
      {
         julianYear--;
         julianMonth += 13;
      }
      
      double julian = (java.lang.Math.floor(365.25 * julianYear) + java.lang.Math.floor(30.6001*julianMonth) + day + 1720995.0);
      if (day + 31 * (month + 12 * year) >= JGREG) 
      {
         // change over to Gregorian calendar
         int ja = (int)(0.01 * julianYear);
         julian += 2 - ja + (0.25 * ja);
      }
      return java.lang.Math.floor(julian);
   }
   

}
el asunto es que esta aplicación no funcionaré en windows.

Agradezco su atención y ayuda que puedan darme. Un saludo.