Ошибки Вложенности Пути Построения 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 103

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...:

  1. перейдите в навигатор и нажмите правой кнопкой мыши на проекте
  2. Построить Путь
  3. Настроить Путь Сборки
  4. источник (вкладки)

Exclusion Patterns

там вы можете добавить 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"

Выделение "Библиотеки Веб-Приложений":

Highlighting "Web App Libraries"

вы должны отделить свои источники и целевой каталог, в котором идет вывод сборки. Также важно отметить, что ни один файл класса никогда не может оказаться в исходном каталоге. Это не противоречит совету вашего профессора-на самом деле он продвигает стандартную исходную структуру maven./src / main / java И./ src / main / webapp. Второй должен держать, например. обязательный WEB-INF / web.xml-файл, но вы никогда не будете помещать туда фактические классы.

Что нужно изменить ваш целевой каталог. Я предлагаю пойти с теми же стандартами и выбрать имя "./цель" для этого. Все встроенные файлы будут отправлены сюда и упакованы, что приведет к правильному развертываемому артефакту. Если вы перейдете на использование maven позже, это также поможет сделать это по сценарию, повторяемым способом.

надеюсь, что проясняет вашу проблему.

У меня была та же проблема, и правильный ответ выше не работал для меня. То, что я сделал, чтобы решить это, было пойти в Build Path->Configure Build Path и на вкладке источник я удалил все источники (у которых был только один источник) и перенастроил их оттуда. Я закончил тем, что удалил проект из eclipse и снова импортировал проект maven, чтобы устранить ошибку.

принятое решение не работает для меня, но я покопался в настройках проекта.

следующее решение исправило это для меня, по крайней мере, если вы используете динамический веб-проект:

  1. Правой Кнопкой Мыши на проекте свойства. (или alt-enter в проекте)
  2. в разделе сборка развертывания удалите "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.

Это начало снимать меня с огромной кроличьей дыры исправления глюков с Eclipse, однако я просто удалил проект из Eclipse и повторно импортировал его, чтобы исправить это.

сделать две папки: final/src/ для хранения исходного кода java, и final/WebRoot/.

вы не можете поместить источник и вирус вместе. Я думаю, что вы можете неправильно понять своего учителя.