Я думаю, что проблема проста. Вы генерируете jar из своего кода, но проблема в том, что при создании такого jar вам нужно позаботиться о предоставлении сторонних зависимостей в CLASSPATH, иначе выше может быть выдано сообщение об ошибке, если при выполнении вашего jar он не находит нужного внешние классы.
Теперь давайте рассмотрим 2 способа, которые вы описали выше:
1) java -jar app.jar
. Это упакует ваш текущий код вместе с необходимыми файлами, добавленными в CLASSPATH.
2) Теперь, когда вы генерируете jar через maven, он загружает необходимые сторонние классы, а затем упаковывает ваше приложение в jar, в котором будут ранее упомянутые загруженные классы. Таким образом, при запуске этого jar будут присутствовать все необходимые классы.
Надеюсь, я очистил ваши сомнения в том, почему возникает описанная выше проблема. Если нет, обратитесь ко мне, и я постараюсь вам помочь.
Удачи и счастливого обучения!