История изменений
Исправление proofit404, (текущая версия) :
Добавим к текущему classpath директорию с твоими jar'ками:
URL[] repositoryJars = walkRepository (repository, new URL[] { new File(System.getProperty("user.dir")).toURI ().toURL ()});
ClassLoader currentThreadClassLoader = Thread.currentThread().getContextClassLoader();
URLClassLoader urlClassLoader = new URLClassLoader(repositoryJars, currentThreadClassLoader);
Thread.currentThread().setContextClassLoader(urlClassLoader);
где repository - строка содержащая путь к складу jar файлов; а метод walkRepository выглядит следующим образом:
public static URL[] walkRepository (String repositoryPath, URL[] Aggregator) {
File[] list = new File(repositoryPath).listFiles();
for (File currentFile : list) {
if (currentFile.isDirectory()) {
Aggregator = walkRepository(currentFile.getAbsolutePath(), Aggregator);
} else if (currentFile.getName ().endsWith (".jar")) {
try {
List<URL> tempAgg = new ArrayList<URL>(Arrays.asList(Aggregator));
tempAgg.add (currentFile.toURI ().toURL ());
Aggregator = tempAgg.toArray (new URL[] {});
} catch (Exception ex) {
System.out.println ("Fail to add " + currentFile.getAbsolutePath() + ".jar file to the classpath.");
}
}
}
return Aggregator;
}
mainClass = Class.forName(mainClassName, true, urlClassLoader);
Исходная версия proofit404, :
Добавим к текущему classpath директорию с твоими jar'ками:
URL[] repositoryJars = walkRepository (repository, new URL[] { new File(System.getProperty("user.dir")).toURI ().toURL ()});
ClassLoader currentThreadClassLoader = Thread.currentThread().getContextClassLoader();
URLClassLoader urlClassLoader = new URLClassLoader(repositoryJars, currentThreadClassLoader);
Thread.currentThread().setContextClassLoader(urlClassLoader);
где repository - строка содержащая путь к складу jar файлов; а метод walkRepository выглядит следующим образом:
public static URL[] walkRepository (String repositoryPath, URL[] Aggregator) {
File[] list = new File(repositoryPath).listFiles();
for (File currentFile : list) {
if (currentFile.isDirectory()) {
Aggregator = walkRepository(currentFile.getAbsolutePath(), Aggregator);
} else if (currentFile.getName ().endsWith (".jar")) {
try {
List<URL> tempAgg = new ArrayList<URL>(Arrays.asList(Aggregator));
tempAgg.add (currentFile.toURI ().toURL ());
Aggregator = tempAgg.toArray (new URL[] {});
} catch (Exception ex) {
System.out.println ("Fail to add " + currentFile.getAbsolutePath() + ".jar file to the classpath.");
}
}
}
return Aggregator;
}
mainClass = Class.forName(mainClassName, true, urlClassLoader);