Bom... estou usando o HSQLDB para fazer uma aplicação com DB Standalone mesmo, e tenho .jars q eu gostaria de aproveitar na aplicação, como por exemplo o proprio hsqldb.jar. Entao ao inves de eu ficar colocando toda vez o hsqldh.jar no classpath do PC onde instalo a aplicação, apenas criei um diretório chamado LIBS e carrego todos .jars q eu quero via uma classe que preparei para esse tipo de necessidade.
Class sysclass = URLClassLoader.class;
try
{
Method method = sysclass.getDeclaredMethod("addURL", parameters);
method.setAccessible(true);
method.invoke(sysloader, new Object[] { u });
System.out.println(u.toString());
}
catch (Throwable t)
{
t.printStackTrace();
throw new IOException("ERror, could not add URL to system classloader");
}
}
public static void scanJars(String moduleFolder)
{
File moduleDirectory = new File(moduleFolder);
String classpath = System.getProperty("java.class.path");
File[] moduleFiles = moduleDirectory.listFiles();
for (int i = 0; i < moduleFiles.length; i++)
{
File moduleFile = moduleFiles[i];
if ( moduleFile.getName().endsWith(".jar") || moduleFile.getName().endsWith(".dll") )
{
Utilização da classe: Crie uma instancia dela na sua aplicação onde necessite os .jars no classpath e chame o metodo scanJars(Diretorio_onde_estao_os_jars)
Exemplo:
import java.util.*;
import java.net.*;
import java.sql.*;
import java.io.File;
import java.io.*;
import java.lang.reflect.Method;
public class ConnectTeste1
{
public Connection conn;
public void conecta( String dbfile ) throws Exception
{
}
public void shutdown() throws SQLException
{
Statement st = conn.createStatement();
// db writes out to files and performs clean shuts down
// otherwise there will be an unclean shutdown
// when program ends
st.execute("SHUTDOWN");
conn.close(); // if there are no other open connection
System.out.println("Cosed Connect OK!");
}