На більшу частину правильно відповів Торбьорн Равн Андерсен.
Ця відповідь намагається пролити світло на питання, що залишилося: як файл класу з помилками може опинитися в банку?
Кожна збірка (mvn & javac або eclipse) сигналізує по-своєму, коли виявляє помилку компіляції, і відмовляється створювати з неї файл Jar (або принаймні помітно попереджає вас). Найімовірнішою причиною мовчазного отримання файлів класів з помилками в банку є одночасна робота Maven та Eclipse.
Якщо під час запуску збірки mvn у вас відкрито Eclipse, вимкніть Project > Build Automatically, поки mvn не завершиться.
EDIT : Спробуємо розділити загадку на три частини:
(1) Що означає "java.lang.Error: невирішена проблема компіляції"
Це пояснив Торбьорн Равн Андерсен. Немає сумнівів, що Eclipse виявив помилку під час компіляції .
(2) Як може скомпільований eclipse файл класу потрапити у файл jar, створений maven (припускаючи, що maven не налаштований на використання ecj для компіляції)?
Це може статися або за допомогою виклику maven без чищення або неповного очищення. Або автоматична збірка Eclipse може реагувати на зміни у файловій системі (зроблено maven) і повторно скомпілювати клас, перш ніж maven продовжить збирати файли класів у банку ( це те, що я мав на увазі під "паралельною операцією" у своїй оригінальній відповіді ).
(3) Як так, помилка компіляції є, але mvn cleanвдається?
Знову ж таки декілька можливостей: (а) компілятори не погоджуються, чи є вихідний код законним, або (б) Eclipse компілюється з непрацюючими налаштуваннями, такими як неповний шлях до класу, неправильна відповідність Java тощо. У будь-якому випадку послідовність оновлення та чистої збірки в Eclipse повинні вивести проблему на поверхню.