Простой ответ: все ваши внутренние классы должны быть помечены как статические, или вы должны использовать полный, например. не внутренние классы.
Длинный ответ: Java делает несколько вещей автоматически, и вы столкнулись с крайним случаем (см. здесь ). Для внутреннего класса (в основном) невозможно иметь конструктор без аргументов. Java всегда добавляет один аргумент к любым конструкторам во внутреннем / локальном классе, и этот аргумент является ссылкой на родительский класс. Это используется, чтобы вы могли получить доступ ко всем переменным / методам родительского объекта, но это означает, что даже конструктор без аргументов (в коде) имеет (при использовании отражения, как это делает xstream) один аргумент. Чтобы исправить, пометьте класс как статический, чтобы он больше не требовал наследования всех методов / переменных родительского класса.