Helpers - компьютеры, интернет, программирование

Есть ли разница между развертыванием на Tomcat через STS и вручную?

У меня возникли некоторые проблемы с запуском приложения, и, похоже, это связано с проблемами с Apache Tiles.

Странная вещь, и основа моего вопроса заключается в том, что когда я развертываю через STS 2 tomcats, используя те же версии java, приложение работает, но когда я беру военные файлы, созданные с помощью maven (та же версия java, что и tomcat) а затем разверните их вручную на любом из котов, приложение не работает.

Я строю с помощью maven через STS, используя jdk1.7.0_09.

Я развертываю STS на tomcat 7.0.32, используя jdk1.7.0_09 - это работает

развертывание вручную в tomcat webapps tomcat 7.0.32 с использованием jdk1.7.0_09 - ошибка:

org.springframework.web.util.NestedServletException: Request processing failed; nested exception is org.apache.tiles.request.render.CannotRenderException: ServletException including path '/WEB-INF/tiles/layout.jsp'.

org.apache.jasper.JasperException: Unable to compile class for JSP: 

An error occurred at line: 1 in the generated java file
The type java.util.Map$Entry cannot be resolved. It is indirectly referenced from required .class files

Я развертываю STS на tomcat 7.0.53, используя jdk1.7.0_09 - это работает

развертывание вручную в tomcat webapps tomcat 7.0.53 с использованием jdk1.7.0_09 - ошибка:

 org.springframework.web.util.NestedServletException: Request processing failed; nested exception is org.apache.tiles.request.render.CannotRenderException: ServletException including path '/WEB-INF/tiles/layout.jsp'.

org.apache.jasper.JasperException: Unable to compile class for JSP: 

An error occurred at line: 1 in the generated java file
The type java.util.Map$Entry cannot be resolved. It is indirectly referenced from required .class files

Я не понимаю, почему это работает, когда я развертываю его на тех же котах через Eclipse?

Наконец, когда я пытаюсь развернуться на тестовом сервере (классы все еще созданы с помощью jdk1.7.0_09), который настроен с использованием:

кот 8.2.0.23 jdk1.8.0_11

Я получаю другую ошибку (внутренняя ошибка сервера 500), пытаясь разрешить представление плиток:

javax.servlet.ServletException: Could not resolve view with name 'base/dashboard/view' in servlet with name 'appServlet'

Я довольно застрял в этом, и мне потребовалось некоторое время, чтобы добраться туда, где я нахожусь, но теперь я, кажется, полностью уперся в кирпичную стену, я просто не понимаю, как приложение может работать в tomcat при развертывании через STS, но затем не работает, когда развернут вручную в веб-приложениях tomcat.

Может ли кто-нибудь помочь пролить свет на то, что здесь происходит?

Спасибо

04.07.2015

Ответы:


1

Ясно, что ответ «да, есть», но это бесполезно.

Глядя на сообщение об ошибке, доказательство того, что:

  • проблема возникает, когда Tomcat компилирует JSP, и

  • проблема связана с проблемой пути к классам.

Теперь странно то, что имя предположительно отсутствующего класса — java.util.Map$Entry; то есть стандартный интерфейс Map.Entry. Этот класс находится в стандартной библиотеке Java и, следовательно, должен находиться в пути к классам для компилятора JSP.

Предположение: разница между развертыванием STS и развертыванием вручную может заключаться в нескольких вещах:

  • Возможно, STS выполняет предварительную компиляцию JSP.
  • Возможно, STS настраивает Tomcat по-другому; например настройка конфигураций Tomcat таким образом, чтобы это повлияло на Jasper.

После небольшого исследования (Google) я подозреваю, что основная причина первоначальных проблем с использованием версий Tomcat 7. заключается в том, что вы пытаетесь запустить код, который был скомпилирован для/с компилятором Java 8 на Tomcat 7.

TL; DR заключается в том, что Tomcat 7 и Java 8 не очень хорошо работают вместе.

Ссылка:

Последняя проблема ("Не удалось разрешить представление...") выглядит несвязанной и может быть проблемой переноса Tomcat 7 -> Tomcat 8.

04.07.2015
  • Привет, спасибо, я пришел к тем же выводам, а также прочитал пост, но вы подали мне идею, которую я опробовал только сейчас. Я очистил веб-приложения tomcat, запустил его в STS, и это сработало, а затем я взял папку из wtpwebapps, развернул ее как отдельное веб-приложение tomcat, а затем перезапустил tomcat, и он работает... Я не совсем уверен, что это значит прямо сейчас. .. у него было всего 4 часа сна, но это, безусловно, означает, что существует большая разница между тем, что строит maven, и тем, что строит STS. Надо подумать. Любые идеи, куда идти отсюда? 04.07.2015
  • Спасибо за ответ, на самом деле он не ответил на мой вопрос, но, если бы вы могли, вам пришлось бы быть экстрасенсом, но вы предложили мне взять то, что было в веб-приложениях wtp, и попытаться развернуть его. я, наконец, докопался до сути, и это, по меньшей мере, вводящая в заблуждение ошибка ... причина одна и та же, независимо от того, будет ли это tc7 или tc8, это просто ошибка, которая отличается. Единственная разница, которую я мог видеть между развертыванием wtpwebapp и моей, заключалась в том, что при сборке с помощью maven 04.07.2015
  • Одной из идей было бы сделать снимок двух деревьев каталогов установки и сравнить их с помощью diff -r 04.07.2015
  • мой pom объявляет это в разделе сборки ‹finalName›${finalName}##${project.version}‹/finalName›, который в прошлом я использовал без каких-либо побочных эффектов, а tomcat развертывает и удаляет версию, поэтому контекст просто имя веб-приложения, STS не развертывала никаких папок с ## в имени в tomcat/webapps или catalina/work, но разворачивала войну из maven, поэтому я переименовал войну из mywebapp##0.6.2.war (иллюстративный ) на mywebapp.war, а затем развернул войну, и это сработало .... Так что я до сих пор не знаю, почему, но я отправлю электронное письмо группе пользователей tomcat в поисках ответа. Спасибо. 04.07.2015

  • 2

    На всякий случай, если это кому-нибудь пригодится, я исправил это довольно просто, обновив версию плиток с 3.0.3 до 3.0.5.

    07.07.2015
    Новые материалы

    Интуитивное понимание тензоров в машинном обучении
    Тензор является важной концепцией во многих научных областях, таких как математика, физика, обработка сигналов и компьютерное зрение, и это лишь некоторые из них. В математике тензор — это..

    Использование машинного обучения для диагностики болезни Альцгеймера, часть 4
    Маркеры семантической согласованности для ранней диагностики болезни Альцгеймера (arXiv) Автор: Давиде Колла , Маттео Дельсанто , Марко Агосто , Бенедетто Витиелло , Даниэле Паоло Радичони..

    Почему объяснимость так важна прямо сейчас?
    По мере того, как системы искусственного интеллекта и инструменты на основе машинного обучения распространяются в нашей повседневной жизни, как практики, так и критики все чаще заявляют о..

    Анимированный математический анализ
    Использование Manim для создания математических анимированных визуализаций Визуализация данных помогает понять скрытые закономерности в данных, которые невозможно визуализировать..

    Создание простого слайдера изображений с помощью JavaScript
    Узнайте, как создать базовый слайдер изображений с помощью HTML, CSS и JavaScript. Введение В этом уроке мы создадим удобный слайдер изображений, используя JavaScript, HTML и CSS. Ползунок..

    Создание базы данных с помощью супергероя «Python»
    В этом посте мы узнаем, как создать «базу данных SQLite с помощью модуля python sqlite3, создав простую функцию входа и регистрации. Готовы ли вы к этому путешествию? Если да , давайте приступим..

    ИИ для чайников: руководство для начинающих по пониманию будущего технологий
    Вы чувствуете, что остались позади в мире ИИ? Не волнуйтесь, вы не одиноки! Со всей этой шумихой вокруг искусственного интеллекта может быть трудно понять, с чего начать. Но не позволяйте сленгу..