2013-10-02 2 views
1

maven-assembly-plugin을 사용하여 더 큰 zip 어셈블리 (압축되지 않은 3GB 이상)를 만드는 데 문제가 있습니다. 이 문제는 출력 압축 파일 (1GB 미만으로 압축)을 작성할 때 발생합니다. 나는 문제가 2011 년maven-assembly-plugin을 사용하여 대형 zip 어셈블리 만들기

에 오픈 JDK에 추가/JRE ( https://blogs.oracle.com/xuemingshen/entry/zip64_support_for_4g_zipfile), 내 JDK에 ZIP64에 대한 지원 누락에서 오는 것을 발견

[INFO] Building zip: xxx/HG19-UCSC-dist.zip 
[INFO] ------------------------------------------------------------------------ 
[INFO] BUILD FAILURE 
[INFO] ------------------------------------------------------------------------ 
[INFO] Total time: 12:40.199s 
[INFO] Finished at: Wed Oct 02 11:08:44 BST 2013 
[INFO] Final Memory: 13M/723M 
[INFO] ------------------------------------------------------------------------ 
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-assembly-plugin:2.2-beta-5:single (make-assembly) on project HG19: Execution make-assembly of goal org.apache.maven.plugins:maven-assembly-plugin:2.2-beta-5:single failed: invalid entry size -> [Help 1] 
... 
... 
... 
Caused by: org.apache.maven.plugin.PluginExecutionException: Execution make-assembly of goal org.apache.maven.plugins:maven-assembly-plugin:2.2-beta-5:single failed: invalid entry size 
    at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:115) 
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:208) 
    ... 19 more 
Caused by: java.lang.IllegalArgumentException: invalid entry size 
    at java.util.zip.ZipEntry.setSize(ZipEntry.java:135) 
    at org.codehaus.plexus.archiver.zip.ZipOutputStream.closeEntry(ZipOutputStream.java:352) 
    at org.codehaus.plexus.archiver.zip.ZipOutputStream.finish(ZipOutputStream.java:316) 

주위 상대 : 옵션 -e으로 받는다는 실행하면 나에게 더 자세한 정보를 제공합니다

$ mvn -version 
Apache Maven 3.1.0 (893ca28a1da9d5f51ac03827af98bb730128f9f2; 2013-06-28 03:15:32+0100) 
Maven home: /usr/local/apache-maven-3.1.0 
Java version: 1.7.0_40, vendor: Oracle Corporation 
Java home: /usr/local/java/jdk1.7.0_40/jre 
Default locale: en_GB, platform encoding: ISO-8859-1 
OS name: "linux", version: "2.6.32-279.2.1.el6.x86_64", arch: "amd64", family: "unix" 

을 그리고 다시 같은 문제를보고

그러나, 나는 오라클이 제공하는 최신 하나에 내 JDK 업데이트되었습니다. 최신 Oracle JDK는 Zip64를 지원하지 않습니까? 아니면 다른 것입니까?

소스에서 OpenJDK b147을 빌드 할 수는 있지만 피할 수없는 경우를 피하고 싶습니다.

+0

현재 릴리스 2.4 인 [maven-assembly-plugin] (http://maven.apache.org/plugins/maven-assembly-plugin/)의 최신 버전을 사용하십시오. – khmarbaise

+0

고마워, 나는 그것에 대해 생각하지 않았다. 안타깝게도 도움이되지 않는다. '[ERROR] 목표 org.apache.maven.plugins : maven-assembly-plugin : 2.4 : 프로젝트에서 단일 (make-assembly) HG19 : 목표의 실행 make-assembly org.apache.maven.plugins : maven-assembly-plugin : 2.4 : 단일 실패 : 잘못된 입력 크기 -> [Help 1]' – Jacek

답변

6

다른 시간.

내 예외 스택 추적에보고 된대로 org.codehaus.plexus.archiver.zip.ZipOutputStream.closeEntry(ZipOutputStream.java:352)에 문제가있는 것으로 보입니다. 내가 볼 수 org.codehaus...ZipOutputStream.closeEntry의 소스를 보면 :

entry.setSize(def.getTotalIn()); 

defjava.util.zip.Deflater입니다. 그러나 Deflater.getTotalInint이 아니며 long이 아닙니다. 대신 코드는 개발자에게보고 할 Deflater.getBytesRead()을 사용해야합니다.

[EDIT] 잠시 시간을내어 읽은 사람들을 보았습니다. 참고로,이 문제는 메이븐 어셈블리 플러그인 2.5 버전 이후로 수정되었습니다.

+0

maven 저장소 (https://mvnrepository.com/)에서 최신 버전을 검색하십시오. – EmeraldTablet

0

here, (ZipEntry class)을 볼 수 있듯이이 문제는 JDK 1.7에서 수정되었습니다.

mvn 명령 줄에서 실행하면 JDK 버전 1.7이 표시됩니다.

이 같은 방식으로 구축을 완료하려고, 나는 명령 줄에서 의미 (받는다는 또 다른 JDK를 사용하지 IDE,?) 내가 범인을 발견, 그래서 문제를보고하는 것은 단지 저장

+0

예.프로젝트를 빌드하기 위해 나는'mvn -e install'과 같은 명령 행을 사용한다.'mvn -version'과 비슷하다. – Jacek

+0

BTW, b147은 나에게 약간의 미스터리 인 것처럼 보인다. 최신 Oracle JDK 1.7.0_u40은 Java HotSpot (TM) 64 비트 서버 VM (빌드 24.0-b56, 혼합 모드)''Java ™ SE 런타임 환경 (빌드 1.7.0_40-b43) '을보고합니다. 이는 b147보다 훨씬 뒤처져 있습니다. – Jacek

+0

JDK 설치의'src.zip' 파일을보고'java/util/zip/ZipEntry.java'의'setSize' 메쏘드를 검사 해 주시겠습니까? 'size> 0xFFFFFFFFL' 조건없이 크기를 검사합니까? – Kerb

0

같은 문제가 발생했습니다. 프로젝트의 병을 만들 때 매우 큰 (3GB) 로그 파일이 때때로 선택되어 이로 인해 문제가 발생했습니다. 파일이 삭제되고 대상 jar의 크기가 10MB 미만으로 돌아온 후에 오류가 발생하지 않습니다.

0

포장하기 전에 mvn clean을 실행하지 않아서 야기 된 shade 플러그인을 사용할 때 비슷한 문제 (OP 오류)가 발생했습니다.