Some Eclipse Foundation services are deprecated, or will be soon. Please ensure you've read this important communication.

Bug 356496

Summary: java.util.zip.ZipException in DefaultBundleReader followed by NPE
Product: z_Archived Reporter: Tobias Oberlies <t-oberlies>
Component: TychoAssignee: Jan Sievers <jan.sievers>
Status: RESOLVED FIXED QA Contact:
Severity: normal    
Priority: P2 CC: jan.sievers
Version: unspecified   
Target Milestone: ---   
Hardware: PC   
OS: Windows 7   
Whiteboard:
Attachments:
Description Flags
Little helper to find corrupt jar files in local repository
none
Helper to find corrupt jars as executable jar none

Description Tobias Oberlies CLA 2011-09-01 12:37:57 EDT
Erratically, I get the a ZipException as warning followed by a NullPointerException error. It is impossible to find the corrupted archive, because the DefaultBundleReader doesn't tell me which file is affected.

Additionally, it seems questionable that the DefaultBundleReader swallows the ZipException - probably it should rather fail directly.


[WARNING] Exception reading bundle manifest
java.util.zip.ZipException: error in opening zip file
        at java.util.zip.ZipFile.open(Native Method)
        at java.util.zip.ZipFile.<init>(ZipFile.java:114)
        at org.eclipse.tycho.core.osgitools.DefaultBundleReader.doLoadManifest(DefaultBundleReader.java:88)
        at org.eclipse.tycho.core.osgitools.DefaultBundleReader.loadManifest(DefaultBundleReader.java:57)
        at org.eclipse.tycho.core.maven.MavenDependencyInjector.getClasspathElements(MavenDependencyInjector.java:141)
        at org.eclipse.tycho.core.maven.MavenDependencyInjector.newExternalDependencies(MavenDependencyInjector.java:112)
        at org.eclipse.tycho.core.maven.MavenDependencyInjector.addDependency(MavenDependencyInjector.java:95)
        at org.eclipse.tycho.core.maven.MavenDependencyInjector.injectMavenDependencies(MavenDependencyInjector.java:51)
        at org.eclipse.tycho.p2.resolver.P2TargetPlatformResolver.injectDependenciesIntoMavenModel(P2TargetPlatformResolver.java:448)
        at org.eclipse.tycho.core.resolver.DefaultTychoDependencyResolver.resolveProject(DefaultTychoDependencyResolver.java:98)
        at org.eclipse.tycho.core.maven.TychoMavenLifecycleParticipant.afterProjectsRead(TychoMavenLifecycleParticipant.java:91)
        at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:273)
        at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:156)
        at org.apache.maven.cli.MavenCli.execute(MavenCli.java:534)
        at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:196)
        at org.apache.maven.cli.MavenCli.main(MavenCli.java:141)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:597)
        at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:290)
        at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:230)
        at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:409)
        at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:352)
[ERROR] Internal error: java.lang.NullPointerException -> [Help 1]
org.apache.maven.InternalErrorException: Internal error: java.lang.NullPointerException
        at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:168)
        at org.apache.maven.cli.MavenCli.execute(MavenCli.java:534)
        at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:196)
        at org.apache.maven.cli.MavenCli.main(MavenCli.java:141)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:597)
        at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:290)
        at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:230)
        at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:409)
        at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:352)
Caused by: java.lang.NullPointerException
        at org.eclipse.tycho.core.osgitools.DefaultBundleReader.toProperties(DefaultBundleReader.java:165)
        at org.eclipse.tycho.core.osgitools.DefaultBundleReader.parseHeader(DefaultBundleReader.java:176)
        at org.eclipse.tycho.core.maven.MavenDependencyInjector.getClasspathElements(MavenDependencyInjector.java:141)
        at org.eclipse.tycho.core.maven.MavenDependencyInjector.newExternalDependencies(MavenDependencyInjector.java:112)
        at org.eclipse.tycho.core.maven.MavenDependencyInjector.addDependency(MavenDependencyInjector.java:95)
        at org.eclipse.tycho.core.maven.MavenDependencyInjector.injectMavenDependencies(MavenDependencyInjector.java:51)
        at org.eclipse.tycho.p2.resolver.P2TargetPlatformResolver.injectDependenciesIntoMavenModel(P2TargetPlatformResolver.java:448)
        at org.eclipse.tycho.core.resolver.DefaultTychoDependencyResolver.resolveProject(DefaultTychoDependencyResolver.java:98)
        at org.eclipse.tycho.core.maven.TychoMavenLifecycleParticipant.afterProjectsRead(TychoMavenLifecycleParticipant.java:91)
        at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:273)
        at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:156)
        ... 11 more
Comment 1 Tobias Oberlies CLA 2011-09-01 12:52:36 EDT
I have improved the log output to include the file name of the corrupted file. This should get us a step further in the analysis of the problem.
Comment 2 Tobias Oberlies CLA 2011-09-02 04:28:25 EDT
I've seen the problem in both Tycho 0.11.1 and Tycho 0.13.0-SNAPSHOT. It seems to be reproducible, and the affected artifact is downloaded as pack.gz, so it could be caused by an issue in pack200-decompression.
Comment 3 Holger Oehm CLA 2011-09-02 04:28:56 EDT
Created attachment 202658 [details]
Little helper to find corrupt jar files in local repository
Comment 4 Jan Sievers CLA 2011-10-05 09:13:41 EDT
fixed with commit 7f57426

DefaultBundleReader behaviour is now fail-fast in case of corrupted jar files.
Error message points to corrupt jar file
Comment 5 Tobias Oberlies CLA 2012-04-04 08:10:14 EDT
Created attachment 213574 [details]
Helper to find corrupt jars as executable jar

Tycho only prints out the name of the first corrupt jar. In order to find all of them, run the attached jar with

java -jar CorruptJarFileFinder.jar <path>