Я работаю над простым веб-приложением JSP / Servlet / Tomcat для своего класса. Профессор попросил нас использовать структуру папок, которая немного отличается от стандартной динамической структуры веб-проекта. Вместо того, чтобы использовать папку webcontent, он хочет, чтобы весь наш исходный код находился в src / main / java и src / main / webapp.
Когда я запускаю приложение, мой приветственный файл отображается нормально, но когда я пытаюсь получить доступ к своим сервлетам, я получаю:
Http 500 SEVERE: Allocate exception for servlet InitDb
java.lang.ClassNotFoundException. Я почти уверен, что это ошибка пути сборки. У меня есть final / src на пути сборки, но я получаю предупреждение
"Cannot nest 'final/src/main/webapp/WEB-INF/classes' inside 'final/src'. To enable the nesting exclude 'main/' from 'final/src'
У меня есть это в моей сборке развертывания:
<wb-resource deploy-path="/" source-path="/src/main/webapp" tag="defaultRootSource"/>
Когда я исключаю main /, предупреждение исчезает, но это не решает проблему. Буду признателен за любой совет. Спасибо.
Я хотел добавить в эту ветку немаловажный ответ.
Из-за контроля версий и строгой структуры каталогов я не смог последовать ответу Ахерона (лучший ответ) о выполнении чего-то похожего на удаление
src/
и добавлениеsrc/main/java
аsrc/test/java
также на путь сборки.На самом деле я несколько недель постоянно боролся с этой проблемой вложенного пути сборки. Ответ на проблему намекает в сообщении об ошибке:
To enable the nesting exclude 'main/' from 'final/src'
Fix
В своем пути сборки вам нужно отредактировать
Inclusion and Exclusion Patterns
, нажав,Excluded: (None)
а затемEdit...
:Там вы можете добавить
main/webapp/WEB-INF/classes
какExclusion Pattern
. Затем он должен позволить вам добавитьmain/webapp/WEB-INF/classes
в путь сборки как отдельную исходную папку.источник
Попробуй это:
На вкладке библиотеки:
Удалите библиотеки своего веб-приложения:
Добавьте их обратно:
Выделение «Библиотеки веб-приложений»:
источник
У меня была такая же проблема, и правильный ответ выше мне не помог. Чтобы решить эту проблему, я перешел
Build Path->Configure Build Path
на вкладку «Источник» и удалил все источники (у которых был только один источник) и перенастроил их оттуда. В итоге я удалил проект из eclipse и снова импортировал проект maven, чтобы устранить ошибку.источник
В моем случае у меня есть проект gradle nature в eclipse , проблема была в a
build.gradle
, где этоsourceSets
указано:Это , кажется, хорошо работает с IntelliJ , однако , кажется , чем затмение не любит гнездо
src
,src/java
,src/resources
. В eclipse я должен изменить его на:источник
Вот простое решение:
источник
Вы должны разделить свои источники и целевой каталог, в котором идет сборка. Также важно отметить, что никакие файлы классов никогда не могут оказаться в исходном каталоге. Это не противоречит совету вашего профессора - на самом деле он продвигает стандартную структуру исходного кода maven для ./src/main/java и ./src/main/webapp. Второй должен держать, например. обязательный файл WEB-INF / web.xml, но вы никогда не будете помещать туда настоящие классы.
Что вам нужно изменить, так это ваш целевой каталог. Я предлагаю использовать те же стандарты и выбрать для этого имя "./target". Все созданные файлы будут помещены сюда, и их упаковка приведет к правильному развертываемому артефакту. Если вы позже перейдете на использование maven, это также поможет сделать это повторяемым способом по сценарию.
Надеюсь, это проясняет вашу проблему.
источник
Принятое решение у меня не сработало, но я немного покопался в настройках проекта.
Следующее решение исправило это для меня, по крайней мере, ЕСЛИ вы используете динамический веб-проект:
Вы должны иметь возможность добавить файл src / main / java. Он также автоматически добавляет его в сборку развертывания.
Предостережение: если вы добавили src / test / java, обратите внимание, что он также добавляет его в сборку развертывания. Как правило, в этом нет необходимости. Вы можете удалить это.
источник
Это привело меня в огромную кроличью нору исправления сбоев с помощью Eclipse, однако я просто удалил проект из Eclipse и повторно импортировал его, чтобы исправить.
источник
Чтобы компилятор Eclipse работал правильно, вам необходимо удалить final / src из исходного пути и вместо него добавить final / src / main / java. Это также может решить вашу проблему, поскольку теперь каталог сборки не будет внутри исходной папки Java.
источник
Это зависит от того, для какой папки указано «Использовать как исходную папку». В структуре на картинке, если кто-то говорит это папке «цель» или «сгенерирован», он получает «вложенную» ошибку. Но в папке "cxf", которая является последней, упомянутой в разделе pom.xml 'plugin' и где начинается структура пакета (как показано в файле .wsdl), то есть - правая папка для этого 'исходная' , то ошибки нет
источник
Получил аналогичную проблему. Выполнил следующие шаги, проблема решена:
источник
Сделайте две папки:
final/src/
для хранения исходного java-кода иfinal/WebRoot/
.Вы не можете соединить источник и веб-корневой каталог. Я думаю, вы можете неправильно понять своего учителя.
источник