2016-08-03 5 views
3

build.gradle에서 내 의존성을 알파벳 순으로 재정리 한 후, 스프링 애플리케이션이 더 이상 제대로 작동하지 않는다는 것을 빠르게 알게되었습니다 (시작시 메시지 java.lang.NoSuchMethodError: javax.servlet.ServletContext.getClassLoader()로 중단됨). 종속 관계를 중앙에서 위쪽으로 이동하면 모든 것이 이전과 같이 잘 작동합니다.Gradle : 종속성의 순서가 어떻게 다른가요?

종속성 순서가 응용 프로그램의 실행 방식에 어떤 영향을 줍니까? 제안 된 주문은 무엇입니까?

+0

관련 서적에서 Grails 3.3.1을 사용하여 build.gradle에서 다음 라인을 알파벳순으로 처리하면 apply plugin : "eclipse"| 플러그인 적용 : "idea"| 플러그인 적용 : "전쟁"| 플러그인 적용 : "org.grails.grails-web"| 플러그인 적용 : "asset-pipeline"| "org.grails.grails-gsp"애플리케이션을 Tomcat에 배포하면 메시지와 함께 실패합니다. javax.servlet.ServletException : 'grailsDispatcherServlet'이라는 서블릿에서 이름이 '/ index'인 뷰를 확인할 수 없습니다. –

답변

3

응용 프로그램의 클래스 경로에 영향을줍니다. Undertown 의존성보다 오래된 Servlet 스펙이있을 수 있습니다. 이 answer은 이전 서블릿 사양에서이 특정 오류가 발생하는 이유를 설명합니다.

+0

Does 그것은 위에있는 의존성이 아래의 것보다 우선한다는 것을 의미합니까? 위와 아래 의존성의 과도적인 의존성이있는 경우는 무엇입니까? –

+0

예, FQN과 일치하는 첫 번째 클래스는 클래스 경로 선언 (종속성 순서를 사용하여 빌드)의 순서로로드됩니다. 전이 종속성의 경우 클래스 경로의 상위 종속성 뒤에 추가됩니다. 클래스 경로 (java 명령 행의 -cp 옵션)를 보려면 로깅을 늘려야합니다. –

관련 문제