This case came to light making service provider property files for GNU JAXP: org.xml.sax.driver etc. These should be created in the META-INF/services path of the JAR. Reproduce this error by creating a META-INF/services directory at the root of your compiled class hierarchy and adding one or more property files (attached) and call fastjar without the M argument. Compiled classes in /build with the service provider at:
/build/META-INF/services/org.xml.sax.driver cd /build jar cvf /lib/gnu-jaxp.jar . GNU fastjar takes the file system directory name META-INF and correctly creates the service provider directory in the JAR, but it also creates a default manifest file at meta-inf/Manifest.mf. When I run my JAXP application with gij, it seems to read meta-inf by default, ignore the META-INF path and cannot resolve a SAX driver to instantiate. If I suppress the default manifest with the fastjar M argument, no lowercase meta-inf path is created, the uppercase META-INF path is processed and the SAX driver is loaded. jar cvfM /lib/gnu-jaxp.jar . The Sun JAR specification [1] does not say META-INF must be uppercase, but all the examples are in upper case and broader reading suggests that uppercase path is expected. The attached test case confirms the Sun JVM expects an uppercase META-INF, so it seems gij is not at fault. gij --classpath .:$CLASSPATH:/lib/gnu-jaxp.jar XMLReaderTest java -classpath g:\lib\gnu-jaxp.jar XMLReaderTest XMLReader created with hard-coded value. [1] http://java.sun.com/j2se/1.3/docs/guide/jar/jar.html -- Summary: Incorrect case for META-INF with fastjar Product: gcc Version: 3.4.1 Status: UNCONFIRMED Severity: normal Priority: P2 Component: java AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: phil at mkdoc dot com CC: gcc-bugs at gcc dot gnu dot org,java-prs at gcc dot gnu dot org http://gcc.gnu.org/bugzilla/show_bug.cgi?id=20941