Хорошо, решил это самостоятельно, поэтому я оставлю этот вопрос в курсе и сам отвечу на него, потому что это довольно минималистичный и хороший пример кода для работающего Webapp с последним, на данный момент, встроенным Tomcat, который можно легко упаковать.в автономную и исполняемую флягу и все это без каких-либо сторонних инструментов для упаковки фляг / банок или инструментов для автоматизации упаковки.Я ХОЧУ, чтобы кто-то оставил этот пост с этим решением для меня.Это сэкономило бы столько времени и усилий.
Итак, вот что не так:
первый шаг
Как видно из вывода консоли в исходном вопросе, есть некоторыестолкновения между классами и методами.Это произошло потому, что при экспорте проекта Eclipse в исполняемый файл JAR был выбран неправильный параметр.
Существует 3 варианта:
- Извлечение необходимых библиотек в сгенерированный JAR
- Упакуйте необходимые библиотеки в сгенерированный JAR
- Скопируйте необходимые библиотеки в подпапку рядом с сгенерированным JAR
Второй был выбран, но затем произошли эти конфликты.При выборе первого варианта таких столкновений не бывает.
шаг второй
Но затем он все равно не запускается из-за отсутствия каталога WebContent, который, как ожидается, будет находиться в том же пути, что и jar.Таким образом, быстрое решение, просто чтобы доказать, что он работает с каталогом там (конечно, не для производства), состоит в том, чтобы создать его при первом запуске программы с
new File ("./ WebContent"). Mkdirs ();
например, в методе main или в любом месте до его использования.
edit
Единственное предостережение, поскольку этот параметр извлекает фляги зависимостей и перепаковывает их с оригинальной зависимостьюФляги одного и того же вендора + проекта, имеют один и тот же домен и будут смешиваться, что также может привести к конфликтам имен файлов в будущем при добавлении нескольких фляг.Так что я все еще открыт для кого-то с лучшим ответом , который не требует слишком большой зависимости от сторонних инструментов.Было бы хорошо, если бы основной jar мог хранить другие зависимости как jar вместо извлеченных.Также был бы полезен другой способ, который не позволял бы смешивать файлы зависимостей, несмотря на случаи с одинаковыми путями.