Eclipse - Как я могу изменить "Аспект проекта" с Tomcat 6 на Tomcat 5.5?
Вопрос
(Затмение 3.4, Ганимед)
У меня есть существующий проект динамического веб-приложения в Eclipse.Когда я создавал проект, я указал "Конфигурацию по умолчанию для Apache Tomcat v6" в раскрывающемся списке "Конфигурация".
Пройдет месяц или 2, и теперь я хотел бы изменить конфигурацию на Tomcat 'v5.5'.(Это будет версия Tomcat на рабочем сервере.)
Я попробовал выполнить следующие шаги (безуспешно):
- Я выбрал
Targeted Runtimes
в рамках ПроектаProperties
Тот СамыйTomcat v5.5
опция была отключена, и пользовательский интерфейс отобразил это сообщение:
If the runtime you want to select is not displayed or is disabled you may need to uninstall one or more of the currently installed project facets.
- Затем я нажал на кнопку
Uninstall Facets...
Ссылка.
ПодRuntimes
вкладка, толькоTomcat 6
отображаемый.
ДляDynamic Web Module
, я выбрал версию2.4
на месте2.5
.
ПодRuntimes
вкладка,Tomcat 5.5
теперь отображается.
Однако пользовательский интерфейс теперь отображал это сообщение:
Cannot change version of project facet Dynamic Web Module to 2.4.
Тот СамыйFinish
кнопка была отключена - так что я зашел в тупик.
Я МОГУ успешно создать НОВЫЙ проект с конфигурацией Tomcat версии 5.5.Однако по какой-то причине это не позволит мне понизить рейтинг существующего проекта.
В качестве обходного пути я создал новый проект и скопировал исходные файлы из старого проекта.Тем не менее, обходной путь был довольно болезненным и несколько неуклюжим.
Кто-нибудь может объяснить, как я могу "понизить" конфигурацию проекта с "Tomcat 6" до "Tomcat 5"?Или, может быть, пролить какой-то свет на то, почему это произошло?
Спасибо
Пит
Решение
Это своего рода взлом eclipse, и при этом у вас могут возникнуть проблемы, но это должно сработать:
Откройте вид навигатора и обнаружите, что под вашим проектом есть папка .settings, разверните ее, а затем откройте файл: org.eclipse.wst.common.project.facet.core.xml
вы должны увидеть строку, которая гласит:
<installed facet="jst.web" version="2.5"/>
Измените это значение на 2.4 и сохраните.
Просто убедитесь, что ваш проект не использует ничего специфичного для 2.5, и у вас все должно быть хорошо.
Также, проверьте ваш web.xml имеет правильную конфигурацию:
<web-app version="2.4"
xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
Другие советы
Это может быть старым, но я попробовал и нашел следующее в eclipse Galilio.
Откройте вид навигатора и обнаружите, что под вашим проектом есть папка .settings, разверните ее, а затем откройте файл:org.eclipse.wst.common.project.facet.core.Удалите содержимое этого файла, щелкните правой кнопкой мыши на проекте и выберите "Свойства".Перейдите к фактам проекта во всплывающем окне, там вы можете щелкнуть по вкладкам среды выполнения и преобразовать свой проект в новый фасет, который вы хотите.
если вы используете Maven, то выключите eclipse, затем введите >mvn eclipse:eclipse -Dwtpversion=2.0
, и перезапустите eclipse.
Извините, но, похоже, я не могу оставить комментарий без достаточной репутации, так что...
Я думаю, что eclipse слишком сложно безопасно перейти на более низкий стандарт, потому что он не может точно знать, использовали ли вы что-то из более нового веб-стандарта.Так что, если он просто позволит вам сделать это, это может привести к сбою вашей программы в более старой версии.
Вы всегда можете быть совместимы в обратном направлении, но не в прямом.
Вы можете попробовать снять флажок с фасета, применить, изменить значение фасета и проверить.У меня это работает в Eclipse Helios SR1.
Итак, главное отличие заключается в том, что я делаю это с помощью "Динамического веб-модуля".
Я надеюсь, что у вас это тоже сработает.
Я увидел то же самое, затем я изменил значение версии веб-приложения в web.xml
.Это могло бы исправить ситуацию для вас.
Если вы используете maven, вы можете сгенерировать настройки eclipse с помощью плагина maven eclipse.
Для версии jst.web подключение Maven eclipse учитывает зависимости проекта.Если у вас определена зависимость от API сервлета :
<dependency>
<groupId>org.apache.tomcat</groupId>
<artifactId>servlet-api</artifactId>
<version>6.0.32</version>
</dependency>
Ваш параметр jst.web будет равен 6.0
<faceted-project>
...
<installed facet="jst.web" version="6.0"/>
...
</faceted-project>