Ticket #45 (closed defect: worksforme)

Opened 19 months ago

Last modified 19 months ago

NoClassDefFoundError for NamespacePrefixMapper in Java 1.6

Reported by: anonymous Owned by: somebody
Priority: major Milestone:
Component: component1 Version:
Keywords: Cc:

Description

Running docx4j 2.5.0 with Java 1.6 which uses its own JAXB implementation throws a NoClassDefFoundError? because com.sun.xml.bind.marshaller.NamespacePrefixMapper? is now internal.

java.lang.NoClassDefFoundError: com/sun/xml/bind/marshaller/NamespacePrefixMapper
	at java.lang.ClassLoader.defineClass1(Native Method)
	at java.lang.ClassLoader.defineClassCond(ClassLoader.java:632)
	at java.lang.ClassLoader.defineClass(ClassLoader.java:616)
	at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:141)
	at java.net.URLClassLoader.defineClass(URLClassLoader.java:283)
	at java.net.URLClassLoader.access$000(URLClassLoader.java:58)
	at java.net.URLClassLoader$1.run(URLClassLoader.java:197)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
	at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:248)
	at org.docx4j.XmlUtils.JAXBElementDebug(XmlUtils.java:180)
	at org.docx4j.openpackaging.parts.WordprocessingML.MainDocumentPart.traverseMainDocumentRecursive(MainDocumentPart.java:530)
	at org.docx4j.openpackaging.parts.WordprocessingML.MainDocumentPart.traverseMainDocumentRecursive(MainDocumentPart.java:450)
	at org.docx4j.openpackaging.parts.WordprocessingML.MainDocumentPart.getStylesInUse(MainDocumentPart.java:390)
	at [...]

Change History

comment:1 Changed 19 months ago by jharrop

If you are building docx4j from sources, prior to  http://dev.plutext.org/trac/docx4j/changeset/1196 you had to have both Java 6 and the JAXB reference implementation.

Since  http://dev.plutext.org/trac/docx4j/browser/trunk/docx4j/src/main/java/org/docx4j/jaxb/NamespacePrefixMapperUtils.java?rev=869 you should be able to run docx4j binaries using either the Java 6 or JAXB reference implementations.

See comment at top of  http://dev.plutext.org/trac/docx4j/browser/trunk/docx4j/src/main/java/org/docx4j/jaxb/NamespacePrefixMapperUtils.java?rev=1196 for gotchas.

I suggest you try a docx4j nightly build.

If you have any further problems, please raise them in the forum first.

comment:2 Changed 19 months ago by jharrop

  • Status changed from new to closed
  • Resolution set to worksforme
Note: See TracTickets for help on using tickets.