source

스프링 - applicationContext.xml이 없으므로 열 수 없습니다.

manysource 2023. 10. 7. 12:01

스프링 - applicationContext.xml이 없으므로 열 수 없습니다.

저는 Spring MVC 어플리케이션이 있고 Junit tests가 context.xml 파일과 결합된 문제가 있습니다.

JUNIT 테스트 수업에서 다음과 같이 적습니다.

final ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
service = (TestServiceImpl) context.getBean("testServiceImpl");

applicationContect.xml을 찾을 수 없다는 오류가 나타납니다.

스프링 골조콩 공장BeanDefinitionStoreException: 클래스 경로 리소스 [applicationContext.xml]에서 XML 문서를 구문 분석하는 IOException; 중첩 예외는 java.io 입니다.FileNotFoundException: 클래스 경로 리소스 [applicationContext.xml]이(가) 없으므로 열 수 없습니다.

그러나 WEB-INF 폴더에는 존재합니다.

그래서, 여기 뭐가 문제죠?Junit test를 위한 파일이 존재하지 않는 이유는 무엇입니까?

Spring 파일을 "source"("source"("src" 또는 "resource")로 표시된 다른 폴더에 보관해야 합니다.

WEB-INF는 원본 폴더가 아니므로 클래스 경로에 포함되지 않습니다(즉, JUNIT은 거기서 아무것도 찾지 않습니다).

maven 라는 resources 다음음을 합니다.합니다.applicationContext.xml안으로

자바 코드 호출에서:

ApplicationContext appCtx = new ClassPathXmlApplicationContext("applicationContext.xml");

저도 같은 오류를 당했습니다.했습니다 을 이동하면서 했습니다.applicationContext.xml일순간에

의 하위 src)(:

context = new ClassPathXmlApplicationContext("/com/ejemplo/dao/applicationContext.xml");

ClassPathXmlApplicationContext우리는 그들을 찾지 못할 것입니다.applicationContext.xmln에WEB-INF폴더, 클래스 경로에 없습니다.할 수 다(음) 에 둘 수 ).src/test/resources테스트를 실행할 때 메이븐이 복사하도록 합니다.

저도 이 문제를 발견했습니다.이 문제를 해결하기 위해 한 일은 이 파일을 모든 곳에 복사/붙여넣고 한 번에 한 파일씩 실행하는 것입니다.최종적으로 컴파일 및 실행에 성공한 후 불필요한 것을 삭제합니다.제 상황에서 정확한 위치는 다음과 같습니다.

이는 /src/path 아래에 있습니다(IDE로 Intellij Idea를 사용하고 있습니다).다른 Java 소스 파일이 /src/com/package/path 아래에 있습니다.

도움이 되길 바랍니다.

일식을 사용할 때 어떤 이유로 이런 일이 가끔 발생합니다 (일식 버그??) "excluded" 매개 변수가 *.* 값을 가져옵니다(내 리소스 폴더의 빌드 경로).

제외 사항을 없음으로 변경하면 됩니다(빨간색 직사각형 대 초록색 직사각형 참조). 찾기가 매우 답답했기 때문에 이것이 미래에 누군가에게 도움이 되었으면 합니다.

excluded

합니다를 합니다.src/main/java폴더를 오른쪽 클릭하고 xml 파일을 만듭니다.이 만든다면.application.xml다 합니다./, 작동하지 않을 겁니다.

당신의 구조가 이렇게 생겼다는 것을 알고 있습니다.

package/
|  subpackage/
   | Abc.java
   | Test.java

/application.xml

이미지 설명을 여기에 입력합니다.

해당 파일을 리소스 폴더에 넣었기 때문에 이 문제로 몇 시간 동안 어려움을 겪었지만 도움이 되지 않아 결국 실수를 깨달았습니다.src/메인/자바 바로 밑에 넣습니다.

저에게는 파일(applicationContext.xml)을 리소스 폴더에 보관하여 작동했습니다.

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

enter image description here

src/main/java 폴더에 applicationContext.xml을 넣었더니 작동했습니다.

src 폴더에서 spring-context.xml 파일을 이동하면서 해결했습니다.ApplicationContext 컨텍스트 = newClassPathXmlApplicationContext("spring-context.xml");

메이븐 프로젝트를 위해 jar/target/test-class에 applicationContext.xml을 추가하여 수정하였습니다.그리고 사용.

        XmlBeanFactory bf = new XmlBeanFactory( new ClassPathResource(
                "/applicationContext.xml", getClass() ) )

대신에

        XmlBeanFactory bf = new XmlBeanFactory( new ClassPathResource(
                "/WEB-INF/applicationContext.xml", getClass() ) )

솔루션:
WEB-INF 폴더가 없는 경우 applicationContext.xml 파일을 폴더 소스(src)에 넣어주시기 바랍니다.


그러면 Java ProjectapplicationContext.xml -> getBean -> 업무를 수행하는 파일을 읽을 수 있습니다.

이미지 설명을 여기에 입력합니다.해결책은 리소스 폴더(src->main-> resource)에 xml 파일을 배치하고 이 개체 생성 newClassPathXmlApplicationContext("applicationContext.xml")를 사용하는 것입니다.

enter image description here

리소스라는 이름의 주 디렉터리 맨 아래에 디렉터리를 만듭니다.그것으로 제 문제가 해결됐습니다.

봄에는 모든 소스 파일이 src/main/java 안에 있습니다.마찬가지로, 리소스는 일반적으로 src/메인/리소스 내에 보관됩니다.따라서 스프링 구성 파일을 리소스 폴더 안에 보관해야 합니다.

src/main/resource 내의 파일에 대한 ClassPath 항목도 가지고 있는지 확인합니다.

.classpath에서 다음 두 줄을 확인합니다.누락된 항목이 있으면 추가합니다.

<classpathentry path="src/main/java" kind="src"/>
<classpathentry path="src/main/resources" kind="src" />

따라서, 만약 당신이 모든 것을 준비했다면 아래의 코드가 작동할 것입니다.

ApplicationContext ctx = newClassPathXml ApplicationContext("Spring-Module.xml");

이 코드를 실행해 주세요. 작동했습니다.

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

o/w: 주 메서드 클래스를 삭제하고 다시 만드는 동안 해당 메서드를 다시 생성합니다. 상속된 추상 메서드 작동을 취소하십시오.

Netbeans를 사용하고 있습니다. 파일을 입력하여 문제를 해결했습니다.다른 소스 기본 패키지를 사용한 후 다음과 같은 방법으로 호출했습니다.

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

리소스 폴더

메이븐과 함께 작업하는 동안 동일한 문제가 발생하여 XML 파일을 입력했습니다.src/main/java경로가 효과가 있었습니다.

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

당신은 사실 이해할 필요가 있습니다.ApplicationContext. 이것은 인터페이스이며 구성에 따라 다른 구현이 가능할 것입니다.

현재 사용중인new ClassPathXmlApplicationContext("applicationContext.xml");, 초기 우측에 주의하여 ClassPathXmlApplicationContext라고 표시되어 있으므로 XML이 클래스 경로에 있어야 합니다.따라서 applicationContext.xml을 src 폴더로 끌어다 놓습니다.

Gist: [ClassPathXml]이라는 이름의 새 ClassPathXmlApplicationContext는 프로젝트의 src 폴더에서 xml 파일을 찾으므로 xml 파일만 여기서 끌어다 놓습니다.

ClassPathXmlApplicationContext—클래스 경로에 위치한 XML 파일에서 컨텍스트 정의를 로드하고 컨텍스트 정의 파일을 클래스 경로 리소스로 처리합니다.

FileSystemXmlApplicationContext—파일 시스템의 XML 파일에서 컨텍스트 정의를 로드합니다.

XmlWebApplicationContext—웹 응용프로그램 내에 포함된 XML 파일에서 컨텍스트 정의를 로드합니다.

just change the containing package of your applicationContext.xml file.
 applicationContext.xml must be in src package not in your project package.
 e.g. 
     src(main package)
         com.yourPackageName(package within src)
         classes etc.
     applicationContext.xml(within src but outside of yourPackage or we can say 
                            parallel to yourPackage name)

your-module/src/applicationContext.xml

val context = ClassPathXmlApplicationContext("applicationContext.xml")

디렉토리 경로를 확인합니다. 기본 경로는/src/아닌/.

GL

메이븐 프로젝트 작업 중에 동일한 문제가 발생하여 구성 파일을 다시 작성합니다.spring.xml인에src/main/java저한테는 통했어요

src 폴더와 메인 폴더에서 applicationContext.xml 파일을 이동하여 해결하였습니다.ApplicationContext 컨텍스트 = newClassPathXmlApplicationContext("spring-context.xml");

언급URL : https://stackoverflow.com/questions/3907833/spring-applicationcontext-xml-cannot-be-opened-because-it-does-not-exist