2010-08-08 5 views
8

tengo código como este en Main.java:FileNotFoundException..Classpath resource no encontrado en la primavera?

AbstractApplicationContext context = new ClassPathXmlApplicationContext("spring-config.xml"); 

Hasta hace poco estaba trabajando, pero no sé por qué no se inició con la excepción continuación:

Excepción en el hilo "principal" org.springframework.beans.factory.BeanDefinitionStoreException: IOException que analiza el documento XML class path resource [spring-config.xml]; excepción anidada es java.io.FileNotFoundException: clase ruta del recurso [resorte-config.xml] no se puede abrir porque no existe

la primavera-config.xml es en src/main/resources carpeta.

En realidad quería aprender acerca de las anotaciones: @PostConstruct y @PreDestroy, así que cambiaron la trayectoria de la estructura de JDK 1.6 del JDK 1.5.

Desde entonces, el problema comenzó ...

Cualquier idea de por qué no está funcionando?

NOTA: Si alguno quiere ver la estructura de mi proyecto, por favor, siga este enlace http://code.google.com/p/javapracticeram/source/browse/trunk/SpringExample/

EDIT: alt text http://i38.tinypic.com/348nbde.png

Respuesta

0

Esto se debe a la primavera-config.xml no está en la ruta de clase.

Agregue la ruta completa de spring-config.xml a su classpath.

También escribe el comando que ejecutas para ejecutar tu proyecto. Puede verificar classpath en comando.

+0

Yok, gracias por su reply..As he mencionado en el archivo de configuración es cuestión en la carpeta de Recursos, que se encuentra en la trayectoria de la estructura (véase la captura de pantalla) .. Cómo corro mi proyecto es que acabo ejecuta el archivo main.jav ... y mi proyecto comienza ... Podrías por favor ser más específico sobre lo que estás sugiriendo ... No pude entender ... Gracias por tu respuesta .. – javanoob

+0

@javanerd Build Path won ' t se utilizará para ejecutar su programa. también puedes poner la captura de pantalla para la configuración de Ejecución que usas. Supongo que estás ejecutando tu programa desde eclipse. – YoK

+0

No sé lo que hice, pero está funcionando ahora ... Gracias YoK por investigar mi pregunta [tonta] :) – javanoob

3

Compruebe el contenido de SpringExample/target/classes. ¿Está Spring-config.xml allí? De lo contrario, intente eliminar manualmente el directorio SpringExample/target/y fuerce una reconstrucción con Project => Clean ... en Eclipse.

+1

¿puede explicar por qué sucede esto? Después de una gran cantidad de depuración de este problema, me encontré con su respuesta, pero todavía no puedo entender la razón de este problema. –

+0

Basado en la configuración de Java Build Path en la captura de pantalla anterior, Eclipse vuelca las clases compiladas (más cualquier otra cosa desde classpath, incluidos los archivos .xml) en target/classes. Dependiendo de qué otras herramientas de compilación estén en uso (Maven, Ant, sbt, etc.), algo podría estar borrando ese directorio fuera del conocimiento de Eclipse, y forzar un Clean en Eclipse asegurará que el objetivo/las clases se reconstruyan. – earldouglas

0

Dos cosas vale la pena señalar:

  1. El alcance de su dependencia de la primavera-contexto no debe ser "tiempo de ejecución", pero "compilar", que es el valor por defecto, por lo que sólo puede quitar la línea de alcance .
  2. Debe configurar el complemento del compilador para que compile al menos Java 1.5 para manejar las anotaciones cuando compile con Maven. (También puede afectar a la configuración de IDE, aunque Eclipse no tiende a la atención.)

    <build> 
        <plugins> 
         <plugin> 
          <artifactId>maven-compiler-plugin</artifactId> 
          <configuration> 
           <source>1.5</source> 
           <target>1.5</target> 
          </configuration> 
         </plugin> 
        </plugins> 
    </build> 
    

Después de eso, la reconfiguración de su proyecto de Maven debe solucionarlo. No recuerdo exactamente cómo hacer eso en Eclipse, pero debería encontrarlo si hace clic derecho en el nodo del proyecto y examina los menús.

11

En cuanto a your classpath se excluye src/main/resources y src/test/resources:

<classpathentry excluding="**" kind="src" output="target/classes" path="src/main/resources"/> 
    <classpathentry excluding="**" kind="src" output="target/test-classes" path="src/test/resources"/> 

¿Hay alguna razón para ello? Trate de no excluir un classpath a spring-config.xml :)

0

Estaba teniendo el mismo problema al ejecutar mi proyecto. Al verificar la estructura de los archivos, me di cuenta de que el archivo xml de Spring estaba dentro del paquete del proyecto y, por lo tanto, no se pudo encontrar. Lo puse afuera del paquete y funcionó bien.

-2

La mejor forma de manejar este error- "Usar la anotación". spring.xml- <context:component-scan base-package=com.SpringCollection.SpringCollection"/>

añadir anotaciones en esa clase para la que desea utilizar grano de Identificación (estoy usando la clase "primero") -

@Component 

public class {Primera

Cambios en Clase principal ** -

Application Context context = nueva AnnotationConfigApplicationContext (First.class); usa esto.

Cuestiones relacionadas