Some Eclipse Foundation services are deprecated, or will be soon. Please ensure you've read this important communication.
Bug 356496 - java.util.zip.ZipException in DefaultBundleReader followed by NPE
Summary: java.util.zip.ZipException in DefaultBundleReader followed by NPE
Status: RESOLVED FIXED
Alias: None
Product: z_Archived
Classification: Eclipse Foundation
Component: Tycho (show other bugs)
Version: unspecified   Edit
Hardware: PC Windows 7
: P2 normal (vote)
Target Milestone: ---   Edit
Assignee: Jan Sievers CLA
QA Contact:
URL:
Whiteboard:
Keywords:
Depends on:
Blocks:
 
Reported: 2011-09-01 12:37 EDT by Tobias Oberlies CLA
Modified: 2021-04-28 16:55 EDT (History)
1 user (show)

See Also:


Attachments
Little helper to find corrupt jar files in local repository (1.83 KB, application/octet-stream)
2011-09-02 04:28 EDT, Holger Oehm CLA
no flags Details
Helper to find corrupt jars as executable jar (1.97 KB, application/java-archive)
2012-04-04 08:10 EDT, Tobias Oberlies CLA
no flags Details

Note You need to log in before you can comment on or make changes to this bug.
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>