Announcement Announcement Module
Collapse
No announcement yet.
How to debug "invalid header field"? Page Title Module
Move Remove Collapse
X
Conversation Detail Module
Collapse
  • Filter
  • Time
  • Show
Clear All
new posts

  • How to debug "invalid header field"?

    I'm trying to modify the greenpages sample application to serve as a basis for my own application (called "basement"). But when I build the web module, I get the following cryptic message:
    Code:
    [INFO] [war:war {execution: default-war}]
    [INFO] Packaging webapp
    [INFO] Assembling webapp[basement.web-solution] in [/Users/sarbogast/dev/basement/basement.web/target/basement.web-solution-1.0.0.SNAPSHOT]
    [INFO] Processing war project
    [INFO] Copying webapp resources[/Users/sarbogast/dev/basement/basement.web/src/main/webapp]
    [INFO] Webapp assembled in [65 msecs]
    [INFO] Building war: /Users/sarbogast/dev/basement/basement.web/target/basement.web-solution-1.0.0.SNAPSHOT.war
    [INFO] [com.springsource.bundlor.:transform {execution: bundlor}]
    [INFO] ------------------------------------------------------------------------
    [ERROR] FATAL ERROR
    [INFO] ------------------------------------------------------------------------
    [INFO] Exception reading manifest. Source: 'unknown'
    invalid header field
    [INFO] ------------------------------------------------------------------------
    [INFO] Trace
    com.springsource.util.osgi.manifest.parse.FatalParseException: Exception reading manifest. Source: 'unknown'
    	at com.springsource.util.osgi.manifest.ManifestFactory.getManifest(ManifestFactory.java:55)
    	at com.springsource.bundlor.maven.plugin.AbstractBundlorMojo.getManifest(AbstractBundlorMojo.java:233)
    	at com.springsource.bundlor.maven.plugin.AbstractBundlorMojo.execute(AbstractBundlorMojo.java:205)
    	at org.apache.maven.plugin.DefaultPluginManager.executeMojo(DefaultPluginManager.java:483)
    	at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoals(DefaultLifecycleExecutor.java:678)
    	at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoalWithLifecycle(DefaultLifecycleExecutor.java:540)
    	at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoal(DefaultLifecycleExecutor.java:519)
    	at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoalAndHandleFailures(DefaultLifecycleExecutor.java:371)
    	at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeTaskSegments(DefaultLifecycleExecutor.java:332)
    	at org.apache.maven.lifecycle.DefaultLifecycleExecutor.execute(DefaultLifecycleExecutor.java:181)
    	at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:356)
    	at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:137)
    	at org.apache.maven.cli.MavenCli.main(MavenCli.java:362)
    	at org.apache.maven.cli.compat.CompatibleMain.main(CompatibleMain.java:41)
    	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.classworlds.Launcher.launchEnhanced(Launcher.java:315)
    	at org.codehaus.classworlds.Launcher.launch(Launcher.java:255)
    	at org.codehaus.classworlds.Launcher.mainWithExitCode(Launcher.java:430)
    	at org.codehaus.classworlds.Launcher.main(Launcher.java:375)
    Caused by: java.io.IOException: invalid header field
    	at java.util.jar.Attributes.read(Attributes.java:393)
    	at java.util.jar.Manifest.read(Manifest.java:182)
    	at java.util.jar.Manifest.<init>(Manifest.java:52)
    	at com.springsource.util.osgi.manifest.ManifestFactory.getManifest(ManifestFactory.java:53)
    	... 21 more
    Here is my MANIFEST.MF:
    Code:
    Manifest-Version: 1.0
    Bundle-Classpath: .
    Tool: Bundlor 1.0.0.BUILD-20090616142719
    Import-Library: org.springframework.spring;version="[3.0, 3.1)"
    Bundle-Name: Basement Web
    Web-ContextPath: basement
    Import-Bundle: com.springsource.org.apache.taglibs.standard;version="[
     1.1.2,1.3)"
    Bundle-Vendor: Epseelon
    Module-Type: web
    Bundle-Version: 1.0
    Bundle-ManifestVersion: 2
    Import-Package: com.springsource.server.web.dm;version="[2.0.0, 3.0.0)
     ",freemarker.cache;version="[2.3.15,2.3.15]",basement;version="[1.0,1
     .1)",javax.servlet.jsp.jstl.core;version="[1.1.2,1.2.0)",javax.sql,or
     g.apache.commons.dbcp,org.springframework.beans.factory.annotation;ve
     rsion="[3.0, 3.1)",org.springframework.core.io;version="[3.0, 3.1)",o
     rg.springframework.stereotype;version="[3.0, 3.1)",org.springframewor
     k.web.bind.annotation;version="[3.0, 3.1)",org.springframework.web.co
     ntext;version="[3.0, 3.1)"
    Bundle-SymbolicName: basement.web
    And here is my template.mf:
    Code:
    Manifest-Version: 1.0
    Bundle-ManifestVersion: 2
    Bundle-Name: Basement Web
    Bundle-SymbolicName: basement.web
    Bundle-Vendor: Epseelon
    Bundle-Version: 1.0
    Web-ContextPath: basement
    Import-Template:
     org.springframework.*;version="[3.0, 3.1)",
     basement.*;version="[1.0, 1.1)"
    Import-Package:
     javax.servlet.jsp.jstl.core;version="[1.1.2,1.2.0)",
     com.springsource.server.web.dm;version="[2.0.0, 3.0.0)",
     org.springframework.web.context;version="[3.0, 3.1)",
     freemarker.cache;version="[2.3.15,2.3.15]"
    Import-Bundle:
     com.springsource.org.apache.taglibs.standard;version="[1.1.2,1.3)"
    Import-Library:
     org.springframework.spring;version="[3.0, 3.1)"
    Excluded-Exports:
     basement.tests,
     basement.web
    Excluded-Imports:
     org.springframework.test.*,
     org.junit.*
    Any idea how I can debug that?

  • #2
    In fact, this problem might have been caused by a bug in maven bundlor plugin 1.0.0 M2 because I just upgraded to 1.0.0 M5 and the problem disappeared.

    Comment


    • #3
      M5 uses its own manifest parser instead of the JRE manifest processor and so is quite a lot more tolerant of whitespace details etc. So it is likely your problem was fixed by that change. If M5 is a good alternative to M2, I'd stick with it.

      Comment

      Working...
      X