Saltar al contenido

Spring no puede encontrar el archivo de configuración bean xml cuando existe

Hola usuario de nuestra web, hemos encontrado la respuesta a lo que buscas, deslízate y la obtendrás más abajo.

Solución:

Gracias, pero esa no era la solución. Descubrí por qué no me funcionaba.

Ya que había hecho una declaración:

ApplicationContext context = new ClassPathXmlApplicationContext("beans.xml");

Pensé que me referiría al directorio raíz del proyecto cuando el archivo beans.xml estaba allí. Luego puse el archivo de configuración en src/main/resources y cambié la inicialización a:

ApplicationContext context = new ClassPathXmlApplicationContext("src/main/resources/beans.xml");

todavía era una excepción IO.

Luego, el archivo quedó en src/main/resources/ pero cambié la declaración a:

ApplicationContext context = new ClassPathXmlApplicationContext("beans.xml");

y resolvió el problema, tal vez sea útil para alguien.

gracias y saludos!

Editar:

Dado que muchas personas han aprobado la solución y tuve mi primera experiencia con Spring como estudiante hace unos años, siento el deseo de explicar brevemente por qué funciona.

Cuando se compila y empaqueta el proyecto, todos los archivos y subdirectorios de ‘src/main/java’ en el proyecto van al directorio raíz del jar empaquetado (el artefacto que queremos crear). La misma regla se aplica a ‘src/main/resources’.

Esta es una convención respetada por muchas herramientas como maven o sbt en proceso de construcción de proyectos (nota: ¡como configuración predeterminada!). Cuando el código (de la publicación) estaba en modo de ejecución, no podía encontrar nada como “src/main/resources/beans.xml” debido al hecho de que beans.xml estaba en la raíz del jar (copiado en /beans .xml en el jar/ear/war creado).

Al usar ClassPathXmlApplicationContext, la declaración de ubicación adecuada para las definiciones de beans xml, en este caso, era “/beans.xml”, ya que esta es la ruta a la que pertenece en jar y luego en classpath.

Se puede verificar desempaquetando un jar con un archivador (es decir, rar) y ver su contenido con la estructura de directorios.

Recomendaría leer artículos sobre classpath como complemento.

Prueba esto:

new ClassPathXmlApplicationContext("file:src/main/resources/beans.xml");

Archivo: punto de prefijo a los recursos del sistema de archivos, no classpath.

la ruta del archivo puede ser relativa o del sistema (/home/user/Work/src…)

También tuve un problema similar pero por una causa un poco diferente, así que comparto aquí en caso de que pueda ayudar a alguien.

Mi ubicación de archivo

archivo beans.xml

como estaba usando

ClassPathXmlApplicationContext("beans.xml");

hay dos soluciones

  1. Saque beans.xml del paquete y colóquelo en el paquete predeterminado.
  2. Especifique el nombre del paquete mientras lo usa, a saber.

ClassPathXmlApplicationContext("com/mypackage/beans.xml");

Recuerda que tienes la opción de aclarar .

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *