Это типичный случай путаницы между путь к классу сборки и путь к классу времени выполнения .
Ваш путь к классу сборки содержит ссылки на ваш проект Java(содержит изменения в Velocity) ... но я уверен, что ваш путь к классу времени выполнения содержит ссылки на исходные файлы JAR Velocity.
Управление путь к классу сборки и classpath времени выполнения в веб-проектах в Eclipse (WTP - проект веб-инструментов) претерпел значительные изменения за последние несколько выпусков WTP.Мы можем провести вас черезЕсли вы физически добавили JAR-файлы Velocity в WEB-INF/lib
, давайте начнем с их удаления.
ОК, после удаления файла Velocity.jar
из WEB-INF/lib
выполните следующие действия:
- Щелкните правой кнопкой мыши проект, выберите «Свойства».
- Перейдите в «Путь сборки Java».Выберите вкладку «проекты» и убедитесь, что ваш пользовательский проект Velocity (давайте назовем его «MyVelocity») там НЕ .
- Все еще в «Путь сборки Java», выберите «Библиотеки»"и убедитесь, что Velocity JAR там тоже нет.
Выполнив описанные выше действия, мы очистили ваше Web-приложение от любых ссылок на MyVelocity (ваш проект) или любой другой Velocity JAR.
Теперь самое интересное.Я научу вас, как правильно «добавлять» проекты Java в веб-проекты как зависимости.
- Все еще в свойствах проекта, перейдите к
Deployment Assembly
. - Нажмите «Добавить».
- Выберите «Проект», а затем «Далее».
- Выберите «MyVelocity» и убедитесь, что флажок «Справочник по веб-библиотеке» установлен.
- Нажмите «Готово».
Вернувшись в диалоговое окно Deployment Assembly
, вы должны увидеть MyVelocity
, сопоставленный с WEB-INF/lib/MyVelocity.jar
.
Нажмите OK.
Что мы сделалито есть для сопоставления MyVelocity с зависимостью WEB-INF/lib
.Таким образом, MyVelocity
автоматически добавляется в путь сборки во время компиляции - поэтому очень важно, чтобы не было добавлено в путь сборки, что приводит к дублированию сборки.-path записи.
Теперь все должно работать для вас.Дайте мне знать, если у вас возникнут проблемы.
PS Эти инструкции верны, если вы разрабатываете отдельный проект WAR;если ваш WAR-файл является частью EAR, вы можете (при определенных обстоятельствах, например, если MyVelocity
используется другими модулями J2EE внутри EAR) по-разному отображать MyVelocity
в общем местоположении;если это так, дайте мне знать, и я уточню подробнее.