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.