[SPRING] Java에서 Spring 애플리케이션을 시작하는 예외
SPRINGJava에서 Spring 애플리케이션을 시작하는 예외
Maven을 사용하여 Spring 프로젝트를 컴파일하고 시작할 수있다.
mvn -e clean compile exec:java -Dexec.mainClass=de.fraunhofer.fkie.tet.vmware.manager.Test
그러나 maven-assembly-plugin (applicationContext.xml 포함)을 사용하여 단일 파일로 모든 jar 파일을 어셈블 할 때 java 실행 중에 항상 예외가 발생합니다.
java -cp target/test-jar-with-dependencies.jar:. de.fraunhofer.fkie.tet.vmware.manager.Test
INFO: Loading XML bean definitions from class path resource [applicationContext.xml]
Sep 6, 2010 10:37:21 AM org.springframework.util.xml.SimpleSaxErrorHandler warning
WARNING: Ignored XML validation warning
org.xml.sax.SAXParseException: schema_reference.4: Failed to read schema document 'http://www.springframework.org/schema/context/spring-context.xsd', because 1) could not find the document; 2) the document could not be read; 3) the root element of the document is not <xsd:schema>.
...
Exception in thread "main" org.springframework.beans.factory.xml.XmlBeanDefinitionStoreException:
Line 10 in XML document from class path resource [applicationContext.xml] is invalid; nested exception is org.xml.sax.SAXParseException: cvc-complex-type.2.4.c:
The matching wildcard is strict, but no declaration can be found for element 'context:annotation-config'.
...
Caused by: org.xml.sax.SAXParseException: cvc-complex-type.2.4.c:
The matching wildcard is strict, but no declaration can be found for element 'context:annotation-config'.
또한 클래스 정의에 직접 spring-context.xsd 등의 스키마 정의를 첨부하려고했지만 성공하지는 못했습니다.
less src/main/resources/applicationContext.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd">
<context:annotation-config /> <!-- wegen '@PostConstruct' -->
<!--<context:component-scan base-package="de.fraunhofer" /> -->
...
</beans>
해결법
-
==============================
1.스프링 네임 스페이스 처리기는 /META-INF/spring.schemas 및 /META-INF/spring.handlers 파일을 사용하여 해결됩니다. 이 이름을 가진 파일은 다른 Spring jar에 존재하기 때문에, 아마 하나만 maven-assembly-plugin 후에 target jar에 남아있을 것입니다.
스프링 네임 스페이스 처리기는 /META-INF/spring.schemas 및 /META-INF/spring.handlers 파일을 사용하여 해결됩니다. 이 이름을 가진 파일은 다른 Spring jar에 존재하기 때문에, 아마 하나만 maven-assembly-plugin 후에 target jar에 남아있을 것입니다.
아마도이 파일들을 수동으로 합쳐서 maven-assembly-plugin이이 병합 된 파일로 target jar에있는 파일을 덮어 쓰도록 설정할 수 있습니다.
-
==============================
2.스프링 구성 파일에 컨텍스트 XML 네임 스페이스가 누락 된 것 같습니다. 다음과 같이 스프링 설정 파일의 루트 요소에 추가되어야합니다 :
스프링 구성 파일에 컨텍스트 XML 네임 스페이스가 누락 된 것 같습니다. 다음과 같이 스프링 설정 파일의 루트 요소에 추가되어야합니다 :
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd"> <context:annotation-config /> <context:component-scan base-package="com.abc.xyz" /> </beans>
-
==============================
3.axtavt의 응답에 따라이 문제에 대한 근본적인 문제를 발견했으며이를 버그로보고했습니다. Spring의 경우 : https://jira.springsource.org/browse/SPR-8368 -이 파일의 병합 된 사본을 생성하기위한 해결 방법이 여기에 포함되어 있습니다. 후손을 위해 코드도 여기에 있습니다.
axtavt의 응답에 따라이 문제에 대한 근본적인 문제를 발견했으며이를 버그로보고했습니다. Spring의 경우 : https://jira.springsource.org/browse/SPR-8368 -이 파일의 병합 된 사본을 생성하기위한 해결 방법이 여기에 포함되어 있습니다. 후손을 위해 코드도 여기에 있습니다.
//IOUtils and FileUtils come from Apache Commons IO for(String s : new String[] {"spring.schemas", "spring.handlers", "spring.tooling"}) { Enumeration<?> e = Test.class.getClassLoader().getResources("META-INF/"+s); StringBuilder out = new StringBuilder(); while(e.hasMoreElements()) { URL u = (URL) e.nextElement(); out.append(IOUtils.toString(u.openStream())).append("\n"); } File outf = new File(s); FileUtils.writeStringToFile(outf, out.toString(), "UTF-8"); }
-
==============================
4.나는이 문제에 3 가지 해결책이 있다고 믿는다.
나는이 문제에 3 가지 해결책이 있다고 믿는다.
-
==============================
5.당신은 봄에 어떤 의존성이 있습니까? 일부 스프링 jar 파일이 클래스 경로에 있지 않기 때문에 xml 구문 분석 오류가 발생할 수 있습니다. 봄 3에서 라이브러리는 많은 jar 파일로 나뉘어졌습니다. 이 게시물을 통해 필요한 것을 구체적으로 확인하십시오.
당신은 봄에 어떤 의존성이 있습니까? 일부 스프링 jar 파일이 클래스 경로에 있지 않기 때문에 xml 구문 분석 오류가 발생할 수 있습니다. 봄 3에서 라이브러리는 많은 jar 파일로 나뉘어졌습니다. 이 게시물을 통해 필요한 것을 구체적으로 확인하십시오.
<dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>${org.springframework.version}</version> </dependency>
-
==============================
6.제안 또는 응답에서 구문 분석에 문제가 있음을 알리는 것처럼. 이 오류는 RestTemplate 클라이언트가 특정 종류의 응답을 리소스에서 예상하지만 리소스가 완전히 반환하는 경우 발생할 수 있습니다. 반환 된 응답의 변경과 관련된 POST RestTemplate 클라이언트에 대해이 오류가 발생했습니다.
제안 또는 응답에서 구문 분석에 문제가 있음을 알리는 것처럼. 이 오류는 RestTemplate 클라이언트가 특정 종류의 응답을 리소스에서 예상하지만 리소스가 완전히 반환하는 경우 발생할 수 있습니다. 반환 된 응답의 변경과 관련된 POST RestTemplate 클라이언트에 대해이 오류가 발생했습니다.
예 : Entity 'MyClass'를 반환하는 초기 RestTemplate이 변경되었으며 파서가 오류를 표시하기 위해 String을 반환했습니다.
ResponseEntity<MyClass> postResponseEntity = restTemplate.postForEntity(postEndPoint, httpRequestEntity, MyClass.class); MyClass postResponseBody = postResponseEntity.getBody();
로 변경
ResponseEntity<String> postResponseEntity = restTemplate.postForEntity(postEndPoint, httpRequestEntity, String.class); String postResponseBody = postResponseEntity.getBody();
응답 유형이 엔터티에서 String으로 변경됨에 따라 파서는 Response를 처리 할 때 오류를 발생시키기 시작했습니다. 응답 유형 (내 경우에는 String)을 수정하고 작업을 시작했습니다.
from https://stackoverflow.com/questions/3650252/exception-starting-spring-application-from-java by cc-by-sa and MIT license
'SPRING' 카테고리의 다른 글
[SPRING] Spring MVC 요청 메소드 'GET'이 지원되지 않는 이유는 무엇입니까? (0) | 2018.12.25 |
---|---|
[SPRING] Spring + AspectJ는 aspectj-maven-plugin을 사용하여 자바 8을 위빙한다. (0) | 2018.12.25 |
[SPRING] Spring에서 인스턴스화 된 빈 목록을 얻으려면 어떻게해야합니까? (0) | 2018.12.25 |
[SPRING] 런타임시 스프링의 @Scheduled fixedDelay를 변경하는 방법 (0) | 2018.12.25 |
[SPRING] JPA Transient Annotation 및 JSON (0) | 2018.12.25 |