Я раздаю некоторый код моим студентам-программистам первого семестра, которые создают ZIP-архив своих домашних заданий в Eclipse.Для назначения N я создаю метод main в классе hwN.Submitter, который вызывает метод библиотеки foo.Submit.zip ().Я распространяю основную и библиотеку в исполняемом JAR.foo довольно стабильный, но иногда он меняется.Библиотека входит в JAR-файл каждого домашнего задания.
Теперь предположим, что учащийся добавляет JAR-файл hw1 в путь сборки Eclipse.Затем я изменяю API foo.Submit для hw2 и распространяю его JAR.Поскольку он был добавлен позже в путь сборки, hw2.Submitter завершает загрузку foo.Submit из JAR hw1, который не содержит метод с момента изменения API.
Теперь у меня есть несколько вариантов:A) попросите моих учеников удалить старые JAR-файлы, B) попросите моих учеников изменить порядок пути сборки, или C) напишите мой собственный загрузчик классов.Мне не нравится А, потому что им полезно запускать JAR на старых домашних заданиях.Я не люблю B, потому что они программисты первого семестра.И я не могу заставить работать C.
Я поиграл с URLClassLoader, но загрузчик родительского класса сначала находит классы в старых JAR.Как я могу заменить эти старые JAR-файлы или переопределить загрузчик родительского класса?