Я пытаюсь использовать Class.forName для динамической загрузки класса из файла .jar в файловую систему во время выполнения.Класс, который я пытаюсь загрузить, реализует интерфейс в другом файле .jar, поэтому я использую свой собственный URLClassLoader для ссылки на два .jars.
Код работает, когда он вызывается не в контексте Интернета.app (я проверил это, скопировав и вставив метод в отдельную программу и вызвав его из main).Однако, когда я запускаю / отлаживаю веб-приложение (я использую NetBeans), код завершается ошибкой.Метод newInstance генерирует исключение ClassCastException, когда я пытаюсь привести экземпляр к интерфейсу, указанному в моем jar_file_dependencies.jar.
Вот соответствующий код, если это помогает:
File gameJar = new File("C:\\file_path\\jar_file.jar");
File gameDependenciesJar = new File("C:\\file_path\\jar_file_dependencies.jar");
URLClassLoader cl = new URLClassLoader(new URL[]
{
gameJar.toURI().toURL(),
gameDependenciesJar.toURI().toURL()
});
Class clazz = Class.forName("MyClass", true, cl);
IMyClass myClass = (IMyClass)clazz.newInstance();
System.out.println(game);
} catch (Exception e)
{
System.out.println(e.getMessage());
}
Любые предложения какпочему этот код работает в одной программе, а не в другой, будет принята с благодарностью.
Большое спасибо, Дэн