Я создал встроенный проект jetty&jersey с помощью IDEA и Maven, я разместил его на Github https://github.com/Mengqi777/JettyProject. Запустите JettyServerStart.java, запустите сервер, в адресной строке браузера введите localhost:8080/dynamic, покажите OK, введите localhost:8080/static, покажите файл статического ресурса
Теперь я упаковываю его в военный файл и помещаю в каталог веб-приложений причала. Но статический файл можно увидеть только в браузере с помощью ввода localhost:8080/static.404 Ошибка не найдена, когда в браузере с помощью ввода localhost:8080/dynamic
Что случилось?
Что я должен сделать, чтобы упаковать этот проект в военный файл или файл jar и успешно запустить его в причале?
Ответ 1 · Joakim Erdfelt
При использовании встроенного причала в JettyServerStart.java вы делаете что-то, что вы не объявляете/не настраиваете в своем веб-приложении или файле войны.
Это проект maven, но он не объявлен веб-приложением или военным проектом (в pom.xml)
У него нет своего WEB-INF в нужном месте (мудрая структура каталогов maven), что означает, что ваш встроенный военный файл недействителен.
Зависимости объявлены неправильно для веб-приложения или военного проекта (вы не можете включить jetty-сервер в военный файл)
Ваш плохо расположенный WEB-INF/web.xml не выполняет те же шаги настройки, что и ваш JettyServerStart.java
Вы не указываете, как вы создали свой каталог ${jetty.base} для поддержки этого файла войны?
Вы не указали, какую версию jetty-distribution или jetty-home вы загрузили или с которой пытаетесь работать.
Утверждение "и поместите его в каталог веб-приложений причала" неясно, какое? (использование jetty-distribution/webapps недопустимо и вызовет много ошибок и предупреждений, если вы попытаетесь использовать его для своих собственных веб-приложений, нет jetty-home/webapps, и вы не определили свою базовую конфигурацию причала)
То, как ваш проект объявлен прямо сейчас, даже если он собран вручную, полностью пропуская maven, у вас нет сервлетов, фильтров, прослушивателей, инициализаторов, только спецификация сервлета, предписывающая DefaultServlet по шаблону URL-адреса /, дающая вам статический контент. Вот почему доступ к http://localhost:8080/static/ работает, но больше ничего.