Details
-
Bug
-
Status: Closed
-
Major
-
Resolution: Fixed
-
maven-archiver-2.4
-
None
-
Java HotSpot(TM) Client VM (build 1.5.0_13-121)
Description
If you have a maven dependency on an something with an artifactId that contains a '.' in it, it creates an illegal manifest file when trying to create an executable jar file (java -jar foo.jar).
Exception in thread "main" java.io.IOException: invalid header field name: geronimo-jms_1.1_spec-Extension-Name at java.util.jar.Attributes.read(Attributes.java:409) at java.util.jar.Manifest.read(Manifest.java:167) at java.util.jar.Manifest.<init>(Manifest.java:52) at java.util.jar.JarFile.getManifestFromReference(JarFile.java:158) at java.util.jar.JarFile.getManifest(JarFile.java:145)
Here's my configuration:
<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-jar-plugin</artifactId> <configuration> <archive> <manifest> <mainClass>my.class.Test</mainClass> <addClasspath>true</addClasspath> <addExtensions>true</addExtensions> <classpathPrefix>./lib/</classpathPrefix> </manifest> </archive> </configuration> </plugin>
I added the following dependency:
<dependency> <groupId>org.apache.geronimo.specs</groupId> <artifactId>geronimo-jms_1.1_spec</artifactId> </dependency>
When the maven-archiver tries to create a manifest file with the JARs dependencies it adds the following to the META-INF/MANIFEST.MF file:
geronimo-jms_1.1_spec-Extension-Name: geronimo-jms_1.1_spec geronimo-jms_1.1_spec-Implementation-Version: 1.0
After digging around a bit it turns out that '.' is an illegal character in the "Extension-Name" and "Implementaion-Version" header fields, which leads to the following exception when I try to run "java -jar Test.jar"
java.io.IOException: invalid header field name: geronimo-jms_1.1_spec-Extension-Name
Attachments
Attachments
Issue Links
- relates to
-
MSHARED-99 Archiver should validate manifest attribute names.
- Closed