Estou trabalhando em um webapp JSP / Servlet / Tomcat simples para minha classe. O professor nos pediu para usar uma estrutura de pastas um pouco diferente da estrutura de projeto dinâmico da Web padrão. Em vez de usar a pasta webcontent, ele deseja todo o nosso código-fonte em src / main / java e src / main / webapp.
Quando executo o aplicativo, meu arquivo de boas-vindas é exibido bem, mas quando tento acessar meus servlets, recebo:
Http 500 SEVERE: Allocate exception for servlet InitDb
java.lang.ClassNotFoundException. Tenho certeza de que é um erro no caminho da construção. Eu tenho final / src no caminho da construção, mas estou recebendo o aviso
"Cannot nest 'final/src/main/webapp/WEB-INF/classes' inside 'final/src'. To enable the nesting exclude 'main/' from 'final/src'
Eu tenho isso no meu assembly de implantação:
<wb-resource deploy-path="/" source-path="/src/main/webapp" tag="defaultRootSource"/>
Quando eu excluo main / o aviso desaparece, mas não resolve o problema. Eu agradeceria qualquer conselho. Obrigado.
Eu queria dar uma resposta não-mavenish a esta discussão.
Devido ao controle de versão e a estritos motivos de estrutura de diretórios, não consegui seguir a resposta de Acheron (a melhor resposta) de fazer algo semelhante à remoção
src/
e adiçãosrc/main/java
esrc/test/java
ao caminho de compilação.Na verdade, eu estava enfrentando esse problema aninhado por algumas semanas. A resposta para o problema está sugerida na mensagem de erro:
To enable the nesting exclude 'main/' from 'final/src'
Consertar
No seu caminho de construção, você precisa editar o seu
Inclusion and Exclusion Patterns
clicando emExcluded: (None)
e depoisEdit...
:Lá você pode adicionar
main/webapp/WEB-INF/classes
como umExclusion Pattern
. Em seguida, deve permitir que você adicionemain/webapp/WEB-INF/classes
ao caminho de compilação como uma pasta de origem separada.fonte
Tente o seguinte:
Na guia bibliotecas:
Remova as bibliotecas de aplicativos da web:
Adicione-os novamente em:
Destacando "Bibliotecas de aplicativos da Web":
fonte
Eu tive o mesmo problema e a resposta correta acima não funcionou para mim. O que fiz para resolvê-lo foi acessar
Build Path->Configure Build Path
e, na guia fonte, removi todas as fontes (que tinham apenas uma fonte) e as reconfigurei a partir daí. Acabei removendo o projeto do eclipse e importei novamente o projeto maven para resolver o erro.fonte
No meu caso, eu tenho um projeto de natureza gradle no eclipse , o problema estava em a
build.gradle
, onde issosourceSets
é especificado:Este parece funciona bem com IntelliJ , no entanto parece que eclipse não como um ninho
src
,src/java
,src/resources
. No eclipse , devo alterá-lo para:fonte
Aqui está uma solução simples:
fonte
Você precisa separar suas fontes e seu diretório de destino para onde vai a saída da compilação. Também é importante observar que nenhum arquivo de classe pode acabar no diretório de origem. Isso não é contra o conselho do professor - na verdade, ele está promovendo a estrutura de fontes padrão para ./src/main/java e ./src/main/webapp. O segundo deve conter, por exemplo. o arquivo WEB-INF / web.xml obrigatório, mas você nunca colocará classes reais lá.
O que você precisa alterar é o diretório de destino. Sugiro seguir os mesmos padrões e escolher o nome "./target" para isso. Todos os arquivos criados entrarão aqui e o empacotamento resultará em um artefato implementável correto. Se você migrar para o uso do maven mais tarde, também ajudará a fazer isso de maneira repetida por script.
Espero que isso esclareça seu problema.
fonte
A solução aceita não funcionou para mim, mas fiz algumas pesquisas nas configurações do projeto.
A solução a seguir o corrigiu para mim, pelo menos, se você estiver usando um projeto dinâmico da Web:
Você deve poder adicionar o src / main / java. Ele também o adiciona automaticamente ao Deployment Assembly.
Advertência: Se você adicionou um src / test / java, observe que ele também será adicionado ao Deployment Assembly. Geralmente, você não precisa disso. Você pode removê-lo.
fonte
Isso começou a me levar a um buraco enorme de correção de falhas com o Eclipse, no entanto, acabei de excluir o projeto do Eclipse e reimportá-lo para corrigi-lo.
fonte
Para o compilador Eclipse funcionar corretamente, você precisa remover final / src do caminho de origem e adicionar final / src / main / java. Isso também pode resolver seu problema, pois agora o diretório de construção não estará dentro da pasta de origem Java.
fonte
Depende de qual pasta um está dizendo "Usar como pasta de origem" para. Na estrutura da imagem, se alguém diz para a pasta "target" ou "gerado", ele recebe o erro "aninhado". Mas na pasta "cxf", que é a última, mencionada na seção 'plugin' do pom.xml e onde começa a estrutura do pacote (como mostrado no arquivo .wsdl), ie - a pasta correta para fazê-lo 'source' , então não há erro
fonte
Problema semelhante. Os seguintes passos, o problema foram resolvidos:
fonte
Faça duas pastas:
final/src/
para armazenar o código java de origem efinal/WebRoot/
.Você não pode reunir a fonte e a raiz da web. Eu acho que você pode entender mal o seu professor.
fonte