Estoy trabajando en una aplicación web simple JSP / Servlet / Tomcat para mi clase. El profesor nos pidió que usemos una estructura de carpetas que sea ligeramente diferente de la estructura dinámica de proyecto web predeterminada. En lugar de usar la carpeta de contenido web, quiere todo nuestro código fuente en src / main / java y src / main / webapp.
Cuando ejecuto la aplicación, mi archivo de bienvenida se muestra bien, pero cuando intento acceder a mis servlets obtengo:
Http 500 SEVERE: Allocate exception for servlet InitDb
java.lang.ClassNotFoundException. Estoy bastante seguro de que es un error de ruta de compilación. Tengo final / src en la ruta de compilación pero recibo la advertencia
"Cannot nest 'final/src/main/webapp/WEB-INF/classes' inside 'final/src'. To enable the nesting exclude 'main/' from 'final/src'
Tengo esto en mi ensamblaje de implementación:
<wb-resource deploy-path="/" source-path="/src/main/webapp" tag="defaultRootSource"/>
Cuando excluyo main / la advertencia desaparece, pero no soluciona el problema. Apreciaría cualquier consejo. Gracias.
Quería agregar una respuesta no mavenish a este hilo.
Debido al control de versiones y a las estrictas razones de la estructura de directorios, no pude seguir la respuesta de Acheron (la mejor respuesta) de hacer algo similar a eliminar
src/
y agregarsrc/main/java
ysrc/test/java
a la ruta de compilación.En realidad, había estado luchando de vez en cuando con este problema de ruta de compilación anidada durante un par de semanas. La respuesta al problema se insinúa en el mensaje de error:
To enable the nesting exclude 'main/' from 'final/src'
Reparar
En su ruta de compilación, necesita editar su
Inclusion and Exclusion Patterns
haciendo clic enExcluded: (None)
y luegoEdit...
:Allí puede agregar
main/webapp/WEB-INF/classes
como unExclusion Pattern
. Entonces debería permitirle agregarmain/webapp/WEB-INF/classes
a la ruta de compilación como una carpeta fuente separada.fuente
Prueba esto:
Desde la pestaña de bibliotecas:
Elimine sus bibliotecas de aplicaciones web:
Añadirlos de nuevo en:
Destacando "Bibliotecas de aplicaciones web":
fuente
Tuve el mismo problema y la respuesta correcta anterior no funcionó para mí. Lo que hice para resolverlo fue ir
Build Path->Configure Build Path
y, debajo de la pestaña de fuente, eliminé todas las fuentes (que solo tenían una fuente) y las reconfiguré desde allí. Terminé eliminando el proyecto del eclipse e importé el proyecto de Maven nuevamente para eliminar el error.fuente
En mi caso tengo un proyecto de gradle nature en eclipse , el problema estaba en un
build.gradle
, donde estosourceSets
se especifica:Esto parece que funciona bien con IntelliJ , sin embargo parece que el eclipse no como un nido
src
,src/java
,src/resources
. En eclipse debo cambiarlo a:fuente
Aquí hay una solución simple:
fuente
Debe separar sus fuentes y su directorio de destino donde va la salida de compilación. También es importante tener en cuenta que ningún archivo de clase puede terminar en el directorio de origen. Esto no va en contra de los consejos de tu profesor: en realidad, está promoviendo la estructura fuente estándar de Maven para ./src/main/java y ./src/main/webapp. El segundo debe contener, por ejemplo. el archivo obligatorio WEB-INF / web.xml, pero nunca colocará clases reales allí.
Lo que necesita cambiar es su directorio de destino. Sugiero ir con los mismos estándares y elegir el nombre "./target" para esto. Todos los archivos creados entrarán aquí y su empaquetado dará como resultado un artefacto desplegable correcto. En caso de que migres a usar Maven más tarde, también será útil hacerlo de forma repetida y con guiones.
Espero que aclare tu problema.
fuente
La solución aceptada no funcionó para mí, pero investigué un poco la configuración del proyecto.
La siguiente solución lo arregló para mí al menos SI está utilizando un proyecto web dinámico:
Debería poder agregar el src / main / java. También lo agrega automáticamente al ensamblaje de implementación.
Advertencia: si agregó un src / test / java, tenga en cuenta que también lo agrega al ensamblaje de implementación. En general, no necesitas esto. Puedes quitarlo.
fuente
Esto comenzó a llevarme a un enorme agujero de conejo para solucionar problemas técnicos con Eclipse, sin embargo, simplemente eliminé el proyecto de Eclipse y lo volví a importar para solucionarlo.
fuente
Para que el compilador de Eclipse funcione correctamente, debe eliminar final / src de la ruta de origen y agregar final / src / main / java en su lugar. Esto también puede resolver su problema, ya que ahora el directorio de compilación no estará dentro de la carpeta fuente de Java.
fuente
Depende de a qué carpeta se le diga "Usar como carpeta de origen". En la estructura de la imagen, si uno lo dice a la carpeta "objetivo" o "generado", obtiene el error "anidado". Pero en la carpeta "cxf", que es la última, mencionada en la sección 'plugin' de pom.xml y desde dónde comienza la estructura del paquete (como se muestra en el archivo .wsdl), es decir, la carpeta correcta para hacerlo 'fuente' , entonces no hay error
fuente
Tengo un problema similar. Hizo los siguientes pasos, problema resuelto:
fuente
Haga dos carpetas:
final/src/
para almacenar el código fuente de Java, yfinal/WebRoot/
.No puede juntar la fuente y el webroot. Creo que puedes entender mal a tu maestro.
fuente