On May 3, 2010, at 10:58 AM, "Marco หงุ่ยตระกูล-Schulz
e" <ma...@nightlabs.de> wrote:

> On 05/03/2010 04:24 PM, Sahoo (JIRA) wrote:
>> Possible NPE for jars with null Manifest
>> ----------------------------------------
>>
>>                 Key: FELIX-2318
>>                 URL: https://issues.apache.org/jira/browse/FELIX-2318
>>             Project: Felix
>>          Issue Type: Bug
>>          Components: File Install
>>            Reporter: Sahoo
>>
>>
>> JarFile.getManifest() can return null, so caller must check return
>> value for null-ness to avoid NPE. I see two such occurrences in
>> fileinstall:
>>
>> DirectoryWatcher.java:
>>    private Bundle installOrUpdateBundle(
>>        String bundleLocation, BufferedInputStream is, long checksum)
>>        throws IOException, BundleException
>>    {
>>        is.mark(256 * 1024);
>>        JarInputStream jar = new JarInputStream(is);
>>        Manifest m = jar.getManifest();
>>        String sn = m.getMainAttributes().getValue
>> (Constants.BUNDLE_SYMBOLICNAME);
>> ...
>>
>> BundleTransformer.java:
>>            Manifest m = jar.getManifest();
>>            if (m.getMainAttributes().getValue(new Attributes.Name
>> ("Bundle-SymbolicName")) != null)
>>            ...
>>
>>
>
> Hello *,
>
> it's really funny: I just ran into this problem; that's why I
> subscribed
> to the mailing list and one of the first messages I read on this
> list is
> exactly about this problem.
>
> I assume that it is documented that META-INF must be the first entry
> in
> a JAR and META-INF/MANIFEST.MF the second, but very likely there's a
> huge number of JARs out there which doesn't stick to this rule.

This is part of the JAR spec. But I agree that a NPE is not a very
helpful error message in this context.

Justin


>
> I recommend to throw a meaningful exception (it took my quite some
> time,
> decompiling and debugging to find it):
>
> if (m == null)
>  throw new BundleException(
>    String.format(
>      "The bundle %s does not have a META-INF/MANIFEST.MF! "+
>      "Make sure, META-INF and MANIFEST.MF are the first 2 entries in
> your JAR!",
>      bundleLocation
>    )
>  );
>
> Best regards, Marco :-)
>
> --
> ______________________________________________
> ***  BIKT - Bundesverband Informations- &  ***
> ***     Kommunikationstechnologie e.V.     ***
> ***           http://www.bikt.de           ***
> ______________________________________________
> ***    OpenSource * Freie/Free Software    ***
> ***   ERP (Enterprise Resource Planning)   ***
> *** CRM (Customer Relationship Management) ***
> ***     SCM (Supply Chain Management)      ***
> ***    BPM (Business Process Management)   ***
> ***          http://www.jfire.org          ***
> ______________________________________________
> Marco หงุ่ยตระกูล-Schulze          NightLabs Gm
> bH
>                              Weiherhofstr. 16
>                                79104 Freiburg
>                                       Germany
>
> eMail:  ma...@nightlabs.de
> Fon:    +49-761-88 79 18-88
> Mobile: +49-172-212 63 80
> Fax:    +49-761-88 79 18-99
> WWW:    http://www.NightLabs.de
>
> Geschäftsführung:
>  Marco Schulze <ma...@nightlabs.de>
>  Niklas Schiffler <n...@nightlabs.de>
>
> Eintragung:
>  Amtsgericht Freiburg, HRB 6186
> ______________________________________________
>
>

Reply via email to