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:
el asunto es que esta aplicación no funcionaré en windows.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); } }
Agradezco su atención y ayuda que puedan darme. Un saludo.