2012-05-31 14 views
90

Estoy trabajando en una aplicación web JSP/Servlet/Tomcat para mi clase. El profesor nos pidió que utilizáramos una estructura de carpetas que es ligeramente diferente a la estructura de proyecto web dinámica predeterminada. En lugar de usar la carpeta de contenido web, quiere que todo nuestro código fuente esté bajo src/main/java y src/main/webapp.Errores de anidamiento de la ruta de generación de Eclipse

Cuando ejecuto la aplicación de mi archivo de bienvenida muestra bien, pero cuando intento acceder a mis servlets me sale:

Http 500 SEVERE: Allocate exception for servlet InitDb 

java.lang.ClassNotFoundException. Estoy bastante seguro de que es un error de compilación. Tengo definitiva/src en la trayectoria de la estructura, pero estoy recibiendo el aviso

"Cannot nest 'final/src/main/webapp/WEB-INF/classes' inside 'final/src'. To enable the nesting exclude 'main/' from 'final/src' 

enter image description here

tengo esto en mi montaje de despliegue:

<wb-resource deploy-path="/" source-path="/src/main/webapp" tag="defaultRootSource"/> 

Cuando me excluyo principal/el aviso va de distancia, pero no soluciona el problema. Apreciaría cualquier consejo. Gracias.

Respuesta

242

Tuve el mismo problema incluso cuando creé un proyecto nuevo. Estaba creando el proyecto de Java dentro de Eclipse, luego lo maceé y luego ingresé en las propiedades de ruta de compilación java eliminando src/ y agregando src/main/java y src/test/java. Cuando ejecuto la actualización de Maven solía dar un error de ruta anidada.
Entonces finalmente me di cuenta -porque no había visto esa entrada antes- hay una línea <sourceDirectory>src</sourceDirectory> en un archivo pom escrito cuando lo mavenize. Se resolvió después de eliminarlo.

+0

Este es sólo uno de los muchos trucos al azar. No explicando por qué. Por lo tanto, menos útil. – smwikipedia

+1

Acabo de renombrar la entrada de pom a scr/main/java y todo fue bueno. Gracias por la publicación acheron55 – Beezer

+1

genial, es el trabajo .. – deen

-3

Haga dos carpetas: final/src/ para almacenar el código fuente Java, y final/WebRoot/.

No puede juntar el origen y la raíz web. Creo que puedes malinterpretar a tu profesor.

2

Tiene que separar sus fuentes y su directorio de destino donde va el resultado 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 del consejo de su profesor, en realidad él está promoviendo la estructura de fuente estándar maven para ./src/main/java y ./src/main/webapp. El segundo debe contener, por ej. el archivo WEB-INF/web.xml obligatorio, 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 compilados entrarán aquí y el empaquetado resultará en un artefacto desplegable correcto. Si migras a usar maven más tarde, también te ayudará a hacerlo de una manera guionada y repetible.

Espero que aclare su problema.

0

Para que el compilador Eclipse funcione correctamente, debe eliminar final/src de la ruta fuente 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 de origen de Java.

9

Prueba esto:

En la ficha bibliotecas:

Eclipse -> right click on project name in sidebar -> configure build path -> Libraries 

quitar las bibliotecas de aplicaciones web:

click on "Web App Libraries" -> click "remove" 

Añadir de nuevo en:

click "Add Library" -> click to highlight "Web App Libraries" -> click "next" -> confirm your desired project is the selected option -> click "Finish" 

resaltado " Web A pp Bibliotecas ":

Highlighting "Web App Libraries"

12

quería lanzar en una respuesta no mavenish a este hilo.

Debido al control de versiones y estrictas razones estructura de directorios, he podido seguir la respuesta de Acheron (la mejor respuesta) de hacer algo similar a la eliminación de src/ y añadiendo src/main/java y src/test/java a la trayectoria de la estructura.

En realidad, he estado yendo de un lado a otro luchando contra este problema de compilación anidado 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'

En su trayectoria de la estructura, es necesario editar su Inclusion and Exclusion Patterns haciendo clic en Excluded: (None) y luego Edit...:

Exclusion Patterns

Hay puede agregar main/webapp/WEB-INF/classes como Exclusion Pattern. Luego debería permitir agregar main/webapp/WEB-INF/classes a la ruta de compilación como una carpeta de origen separada.

2

Tuve el mismo problema y la respuesta correcta anterior no funcionó. Lo que hice para resolverlo fue ir al Build Path->Configure Build Path y en la pestaña de fuente eliminé todas las fuentes (que solo tenían una fuente) y las reconfigué desde allí. Terminé eliminando el proyecto de eclipse e importé el proyecto maven nuevamente para aclarar el error.

0

La solución aceptada no funcionó, pero investigué un poco sobre la configuración del proyecto.

La siguiente solución fija para mí, al menos, si está utilizando un proyecto Web dinámico:

  1. Haga clic derecho sobre el proyecto y luego propiedades. (o alt-enter en el proyecto)
  2. Under Deployment Assembly eliminar "src".

Debería poder agregar el src/main/java. También lo agrega automáticamente al Ensamblaje de Despliegue.

Advertencia: Si agregó una nota de src/test/java, también la agrega al Ensamblaje de despliegue. Generalmente, no necesitas esto. Usted puede eliminarlo.

0

En mi caso tengo un proyecto de naturaleza Gradle en eclipsar, el problema estaba en un build.gradle, donde esta sourceSets se especifica:

sourceSets { 
    main { 
     java { 
      srcDir 'src' 
     } 
    } 
} 

Esto parece funciona bien con IntelliJ, sin embargo parece que eclipse no le gusta nido src, src/java, src/resources. En Eclipse debo cambiarlo a:

sourceSets { 
    main { 
     java { 
      srcDir 'src/main/java' 
     } 
    } 
} 
Cuestiones relacionadas