Если код, выполняющий приведение к A, загрузил другой A, чем пакет, который определил B (и содержит A, как вы указали), то в VM может быть два разных класса A. Один из связки, определяющей B, и другой, используемый связкой, выполняющей приведение к A.
Поскольку A является общим типом, вам необходимо убедиться, что пакет, определяющий B, и преобразование пакета в A оба используют один и тот же класс A. Они оба должны либо импортировать пакет, содержащий A, из некоторого 3-го пакета, либо из пакета. определение B должно экспортировать пакет, содержащий A, чтобы пакет, выполняющий приведение к A, мог импортировать этот пакет.