У меня есть класс Assembly, реализующий IAssembly.
Я вижу следующую ошибку при запуске приложения
Caused by: java.lang.IllegalAccessError: class <Assembly > cannot access its superinterface <IAssembly>
at java.lang.ClassLoader.defineClass1(Native Method)
Код сборки
class package.Assembly implements IAssembly {
}
IAssembly
interface IAssembly { //note -this is not public, so uses default protected
}
Сборка и сборка IA существуют в двух разных банках. Обе банки загружаются разными загрузчиками классов. Класс Assembly загружается в дочерний загрузчик классов, IAssembly является родительским. Загрузчики классов используют сцепление.
В обычных случаях это работает. Ошибка возникает, когда я запускаю свое приложение после инструментирования банок с помощью cobertura. Без приборов все работает нормально. Может ли прибор Cobertura вызывать такую ошибку? Или Это ошибка в любом случае, ожидающая обнаружения, но с cobertura ошибка быстро обнаруживается.
Если сделать интерфейс «общедоступным», ошибка исчезнет.