Cloudera CDH/CDP 및 Hadoop EcoSystem, Semantic IoT등의 개발/운영 기술을 정리합니다. gooper@gooper.com로 문의 주세요.
sbt [SBT] assembly시 "[error] deduplicate: different file contents found in the following:"오류 발생시 조치사항
1. assembly에 전체 jar를 포함하지 않도록 하는 경우
가. 메세지 내용
[error] deduplicate: different file contents found in the following:
[error]
C:Usersgooper.ivy2cacheorg.springframeworkspring-webjarsspring-web-4.0.5.RELEASE.jar:org/springframework/web/multipart/support/DefaultMultipartHttpServletRequest.class
[error] C:Usersgooper.ivy2cacheorg.springframeworkspring-webmvcjarsspring-webmvc-2.5.4.jar:org/springframework/web/multipart/support/DefaultMultipartHttpServletRequest.class
나. 조치사항
: libraryDependencies에서 "provided"를 지정해서 assembly에 포함되지 않도록 함
"org.springframework" % "spring-web" % "4.0.5.RELEASE" % "provided" ,
"org.springframework" % "spring-webmvc" % "4.0.5.RELEASE" % "provided",
2. provided를 지정해서 assembly에서 제외할 수는 없고 일부 jar파일만 제외해야 하는 상황
가. 메세지 내용
java.lang.RuntimeException: deduplicate: different file contents found in the following:
C:Usersgooper.ivy2cachestaxstax-apijarsstax-api-1.0.1.jar:javax/xml/XMLConstants.class
C:Usersgooper.ivy2cachexml-apisxml-apisjarsxml-apis-1.4.01.jar:javax/xml/XMLConstants.class
deduplicate: different file contents found in the following:
C:Usersgooper.ivy2cachestaxstax-apijarsstax-api-1.0.1.jar:javax/xml/namespace/NamespaceContext.class
C:Usersgooper.ivy2cachexml-apisxml-apisjarsxml-apis-1.4.01.jar:javax/xml/namespace/NamespaceContext.class
deduplicate: different file contents found in the following:
C:Usersgooper.ivy2cachestaxstax-apijarsstax-api-1.0.1.jar:javax/xml/namespace/QName.class
C:Usersgooper.ivy2cachexml-apisxml-apisjarsxml-apis-1.4.01.jar:javax/xml/namespace/QName.class
....
나. 조치사항
: 포함되는 jar를 찾아서 exclude를 지정한다.
libraryDependencies에서 ("org.apache.jena" % "jena-core" % "3.1.0").exclude("stax", "stax-apis").exclude("xml-apis", "xml-apis")를 지정해준다.
*참고 : https://mvnrepository.com에서 "stax-api"를 검색하며 해당 jar의 groupId와 artifactId를 확인해서
exclude(groupId, artifactId)를 지정해주면된다.
*어떤 jar가 문제되는 jar를 포함하고 있는지 확인하기가 힘든데.. provided로 지정되지 않은 jar에 exclude를 지정해서 "sbt assembly"를
수행해서 정상적으로 assembly되는 케이스를 반복해서 찾아야함.
댓글 0
번호 | 제목 | 날짜 | 조회 수 |
---|---|---|---|
15 | 여러가지 방법으로 특정 jar파일을 exclude하지 못하는 경우 해당 jar파일을 제외시키는 방법 | 2016.08.11 | 287 |
14 | jar파일의 dependency찾는 프로그램 | 2016.08.11 | 400 |
13 | compile할때와 exclude할때 대상을 표현하는 명칭이 다르므로 주의할것 | 2016.08.10 | 942 |
12 | 외부 jar파일을 만들려고하는jar파일의 package로 포함하는 방법 | 2016.08.10 | 176 |
11 | 로컬의 라이브러리파일들을 dependency에 포함시키는 방법 | 2016.08.09 | 643 |
10 | gradle을 이용하여 jar파일 생성시 provided속성을 지정할 수 있게 설정하는 방법 | 2016.08.09 | 601 |
» | [SBT] assembly시 "[error] deduplicate: different file contents found in the following:"오류 발생시 조치사항 | 2016.08.04 | 1036 |
8 | [SBT] SBT 사용법 정리(링크) | 2016.08.04 | 1033 |
7 | [SBT] project.sbt에 libraryDependencies에 필요한 jar를 지정했으나 sbt compile할때 클래스를 못찾는 오류가 발생했을때 조치사항 | 2016.08.03 | 1148 |
6 | build할때 unmappable character for encoding MS949 에러 발생시 조치사항 | 2016.08.03 | 885 |
5 | [sbt] sbt-assembly를 이용하여 실행에 필요한 모든 j라이브러리를 포함한 fat jar파일 만들기 | 2016.07.11 | 2130 |
4 | [sbt] sbt 0.13.11 를 windows에 설치하고 scala프로그램을 compile해서 jar파일 만들기 | 2016.07.11 | 651 |
3 | centos에 sbt 0.13.5 설치 | 2016.05.30 | 810 |
2 | git설명 한글판 | 2015.12.09 | 502 |
1 | pom.xml에서 build.gradle로 변환 | 2015.09.14 | 653 |