Ошибки Вложенности Пути Построения Eclipse
Я работаю над простым JSP/Servlet / Tomcat webapp для моего класса. Профессор попросил нас использовать структуру папок, которая немного отличается от структуры динамического веб-проекта по умолчанию. Вместо того, чтобы использовать папку webcontent он хочет весь наш исходный код под src/main/java и src/main/webapp.
когда я запускаю приложение, Мой файл приветствия отображается нормально, но когда я пытаюсь получить доступ к моим сервлетам, я получаю:
Http 500 SEVERE: Allocate exception for servlet InitDb
java.ленг.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 / предупреждение уходит, но это не устраняет проблему. Буду признателен за любые советы. Спасибо.
10 ответов:
у меня была такая же проблема, даже когда я создал новый проект. Я создавал проект Java в Eclipse, затем mavenize его, а затем переходил в Java build path properties removing
src/
и добавитьsrc/main/java
иsrc/test/java
. Когда я запускаю Maven update, он используется, чтобы дать вложенную ошибку пути.
Тогда я, наконец, понял -потому что я не видел эту запись раньше - есть<sourceDirectory>src</sourceDirectory>
строка в файле pom написана, когда я mavenize его. Это было решено после его удаления.
Я хотел бросить в не-мавениш ответ на эту тему.
из-за контроля версий и строгих причин структуры каталогов, я не смог следовать ответу Ашерона (лучший ответ) делать что-то похожее на удаление
src/
и добавитьsrc/main/java
иsrc/test/java
на пути построения.я на самом деле был вне и на борьбу с этой вложенной проблемой пути сборки в течение нескольких недель. Ответ на проблему намекается в ошибке сообщение:
To enable the nesting exclude 'main/' from 'final/src'
исправить
в вашем пути сборки, вам нужно отредактировать ваш
Inclusion and Exclusion Patterns
при нажатии наExcluded: (None)
а тоEdit...
:
- перейдите в навигатор и нажмите правой кнопкой мыши на проекте
- Построить Путь
- Настроить Путь Сборки
- источник (вкладки)
там вы можете добавить
main/webapp/WEB-INF/classes
какExclusion Pattern
. Тогда он должен позволить вам добавитьmain/webapp/WEB-INF/classes
к пути сборки в виде отдельной исходной папки.
попробуйте это:
на вкладке библиотеки:
Eclipse -> right click on project name in sidebar -> configure build path -> Libraries
удалите библиотеки веб-приложений:
click on "Web App Libraries" -> click "remove"
добавить их в:
click "Add Library" -> click to highlight "Web App Libraries" -> click "next" -> confirm your desired project is the selected option -> click "Finish"
Выделение "Библиотеки Веб-Приложений":
вы должны отделить свои источники и целевой каталог, в котором идет вывод сборки. Также важно отметить, что ни один файл класса никогда не может оказаться в исходном каталоге. Это не противоречит совету вашего профессора-на самом деле он продвигает стандартную исходную структуру maven./src / main / java И./ src / main / webapp. Второй должен держать, например. обязательный WEB-INF / web.xml-файл, но вы никогда не будете помещать туда фактические классы.
Что нужно изменить ваш целевой каталог. Я предлагаю пойти с теми же стандартами и выбрать имя "./цель" для этого. Все встроенные файлы будут отправлены сюда и упакованы, что приведет к правильному развертываемому артефакту. Если вы перейдете на использование maven позже, это также поможет сделать это по сценарию, повторяемым способом.
надеюсь, что проясняет вашу проблему.
У меня была та же проблема, и правильный ответ выше не работал для меня. То, что я сделал, чтобы решить это, было пойти в
Build Path->Configure Build Path
и на вкладке источник я удалил все источники (у которых был только один источник) и перенастроил их оттуда. Я закончил тем, что удалил проект из eclipse и снова импортировал проект maven, чтобы устранить ошибку.
принятое решение не работает для меня, но я покопался в настройках проекта.
следующее решение исправило это для меня, по крайней мере, если вы используете динамический веб-проект:
- Правой Кнопкой Мыши на проекте свойства. (или alt-enter в проекте)
- в разделе сборка развертывания удалите "src".
вы должны быть в состоянии добавить src/main/java. Он также автоматически добавляет его в развертывание Собрание.
предостережение: если вы добавили src/test/java, обратите внимание, что он также добавляет его в сборку развертывания. Как правило, вам это не нужно. Вы можете удалить его.
в моем случае у меня есть проект gradle nature в затмение проблема была в
build.gradle
, где этотsourceSets
указано:sourceSets { main { java { srcDir 'src' } } }
это, кажется, хорошо работает с intelliJ,кажется, чем затмение не любит гнездо
src
,src/java
,src/resources
. В затмение Я должен изменить его на:sourceSets { main { java { srcDir 'src/main/java' } } }
для правильной работы компилятора Eclipse вам нужно удалить final/src из исходного пути и вместо этого добавить final/src/main/java. Это также может решить вашу проблему, так как теперь каталог сборки не будет находиться внутри исходной папки Java.