Почему бы нам не разместить библиотеку tomcat в наших библиотеках приложений? - PullRequest
1 голос
/ 09 ноября 2011

У меня есть веб-приложение, работающее в Tomcat 7. Когда я помещаю библиотеки по умолчанию tomcat (jsp-api.jar, servlet-api.jar и т. Д.) В мое приложение / WebContent / WEB-INF / lib, оно выдаетисключение: java.lang.IllegalStateException: No org.apache.tomcat.InstanceManager set in ServletContext

Когда я удаляю эти файлы из моей библиотеки lib и устанавливаю библиотеку tomcat в build.xml, она работает нормально.Может кто-нибудь объяснить мне, почему это происходит?Почему я не могу использовать библиотеки Tomcat в своей папке lib?

Ответы [ 2 ]

9 голосов
/ 09 ноября 2011

Вы в основном не хотите добавлять сервлет, JSP, EL или любые связанные с контейнером jar-файлы в папку WEB-INF / lib вашего приложения.

Эти библиотеки должны предоставляться контейнером. Если вы добавите их явно, у развернутого приложения возникнет проблема (то есть два одинаковых jar-файла в одном и том же пути к классам).

РЕДАКТИРОВАТЬ : Если вам нужны эти jar-файлы для компиляции кода, то вы можете добавить их в путь к классам - они не обязательно должны находиться в WEB-INF / lib вашего приложения.

т.е. если вы используете Eclipse, вы можете добавить «пользовательскую библиотеку»: Properties -> Java Build Path -> Libraries -> Add Library, которая определит все связанные с контейнером библиотеки; Вы также можете Add External JARs и просто выбрать их из своего каталога tomcat7.

РЕДАКТИРОВАТЬ 2 : Как указал BalusC: «Вы можете просто сослаться на него как на целевое время выполнения, тогда Eclipse сделает волшебство. См. Также связанную ссылку, которую я прокомментировал на вопрос. Не нужно возиться с пользовательские библиотеки. "

1 голос
/ 09 ноября 2011

Вы не должны связывать банки j2ee stand в вашем приложении. Они предоставляются сервером приложений. Если вы хотите, чтобы файлы jar были доступны для компиляции, укажите путь компиляции при сборке приложения. Но не связывайте их в приложении.

Все IDE предоставляют возможность исключать банки при объединении приложения.

...