Как создать приложение basi c Spring с использованием beans в Intellij - PullRequest
0 голосов
/ 19 июня 2020

Я попробовал basi c и свое первое весеннее приложение с использованием Intellij IDEA Community Edition 2019.3.1. Я передал аргумент класса основному классу, используя ApplicationContext, beans и файл XML для анализа значения данных. Но при запуске приложения отображается исключение FileNotFound, хотя файл XML существует. На изображении ниже показана структура моего проекта.
enter image description here

Ниже приведены мои коды из приложения java и luxan. xml

package org.example;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class App
{
    public static void main( String[] args )
    {
        ApplicationContext context = new ClassPathXmlApplicationContext("org/example/luxan.xml");
        Vehicle obj = (Vehicle)context.getBean("vehicle");
        obj.drive();
    }
}

<?xml version="1.0" encoding="UTF-8" ?>

<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
       http://www.springframework.org/schema/beans/spring-beans-5.1.xsd">

    <bean id="vehicle" class="org.example.Car"></bean>

</beans>

А ниже ошибка, которую я получил при запуске приложения

Exception in thread "main" org.springframework.beans.factory.BeanDefinitionStoreException: IOException parsing XML document from class path resource [org/example/luxan.xml]; nested exception is java.io.FileNotFoundException: class path resource [org/example/luxan.xml] cannot be opened because it does not exist
    at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:345)
    at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:305)
    at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:188)
    at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:224)
    at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:195)
    at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:257)
    at org.springframework.context.support.AbstractXmlApplicationContext.loadBeanDefinitions(AbstractXmlApplicationContext.java:128)
    at org.springframework.context.support.AbstractXmlApplicationContext.loadBeanDefinitions(AbstractXmlApplicationContext.java:94)
    at org.springframework.context.support.AbstractRefreshableApplicationContext.refreshBeanFactory(AbstractRefreshableApplicationContext.java:130)
    at org.springframework.context.support.AbstractApplicationContext.obtainFreshBeanFactory(AbstractApplicationContext.java:637)
    at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:522)
    at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:144)
    at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:85)
    at org.example.App.main(App.java:10)
Caused by: java.io.FileNotFoundException: class path resource [org/example/luxan.xml] cannot be opened because it does not exist
    at org.springframework.core.io.ClassPathResource.getInputStream(ClassPathResource.java:180)
    at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:331)
    ... 13 more

1 Ответ

0 голосов
/ 19 июня 2020

Для вашего текущего местоположения luxan. xml на картинке выше. вам необходимо предоставить весь путь к классам для контекста приложения.

ApplicationContext context = new ClassPathXmlApplicationContext("main/java/org/example/luxan.xml");

если luxan. xml расположен как дочерний для sr c, нам не нужно указывать путь к контексту приложения, достаточно просто имени XML.

ApplicationContext context = new ClassPathXmlApplicationContext("luxan.xml");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...