Docx4J Bad [Content_Types] .xml with WebLogic 12c

I am wondering if anyone has the same setup problem:

  • Weblogic 12c
  • Docx4J 2.8.1
  • Java EE 6

I tried to get the contents of a specific Microsoft Word 2007 document with Docx4J, but I got an error similar to the following:

When I try to do:

WordprocessingMLPackage package = WordprocessingMLPackage.load(new File((path)); 

it will throw an exception, for example:

 2013-06-05 15:29:12.0283 ERROR Thread-18 org.docx4j.jaxb.NamespacePrefixMapperUtilsname: com.sun.xml.internal.bind.namespacePrefixMapper value: org.docx4j.jaxb.NamespacePrefixMapperSunInternal@2b0bf3 .. trying RI. javax.xml.bind.PropertyException: name: com.sun.xml.bind.namespacePrefixMapper value: org.docx4j.jaxb.NamespacePrefixMapper@2a3c7c at org.eclipse.persistence.jaxb.JAXBMarshaller.setProperty(JAXBMarshaller.java:590) at org.docx4j.jaxb.NamespacePrefixMapperUtils.tryUsingRI(NamespacePrefixMapperUtils.java:73) at org.docx4j.jaxb.NamespacePrefixMapperUtils.getPrefixMapper(NamespacePrefixMapperUtils.java:64) at org.docx4j.jaxb.Context.<clinit>(Context.java:56) at org.docx4j.openpackaging.contenttype.ContentTypeManager.parseContentTypesFile(ContentTypeManager.java:666) at org.docx4j.openpackaging.io.LoadFromZipNG.process(LoadFromZipNG.java:206) at org.docx4j.openpackaging.io.LoadFromZipNG.get(LoadFromZipNG.java:193) at org.docx4j.openpackaging.packages.OpcPackage.load(OpcPackage.java:301) at org.docx4j.openpackaging.packages.OpcPackage.load(OpcPackage.java:245) at org.docx4j.openpackaging.packages.OpcPackage.load(OpcPackage.java:195) at org.docx4j.openpackaging.packages.OpcPackage.load(OpcPackage.java:178) at org.docx4j.openpackaging.packages.WordprocessingMLPackage.load(WordprocessingMLPackage.java:172) 2013-06-05 15:29:12.0455 ERROR Thread-18 org.docx4j.jaxb.NamespacePrefixMapperUtils – JAXB: neither Reference Implementation nor Java 6 implementation present? javax.xml.bind.PropertyException: name: com.sun.xml.bind.namespacePrefixMapper value: org.docx4j.jaxb.NamespacePrefixMapper@2a3c7c at org.eclipse.persistence.jaxb.JAXBMarshaller.setProperty(JAXBMarshaller.java:590) at org.docx4j.jaxb.NamespacePrefixMapperUtils.tryUsingRI(NamespacePrefixMapperUtils.java:73) at org.docx4j.jaxb.NamespacePrefixMapperUtils.getPrefixMapper(NamespacePrefixMapperUtils.java:64) at org.docx4j.jaxb.Context.<clinit>(Context.java:56) at org.docx4j.openpackaging.contenttype.ContentTypeManager.parseContentTypesFile(ContentTypeManager.java:666) at org.docx4j.openpackaging.io.LoadFromZipNG.process(LoadFromZipNG.java:206) at org.docx4j.openpackaging.io.LoadFromZipNG.get(LoadFromZipNG.java:193) at org.docx4j.openpackaging.packages.OpcPackage.load(OpcPackage.java:301) at org.docx4j.openpackaging.packages.OpcPackage.load(OpcPackage.java:245) at org.docx4j.openpackaging.packages.OpcPackage.load(OpcPackage.java:195) at org.docx4j.openpackaging.packages.OpcPackage.load(OpcPackage.java:178) at org.docx4j.openpackaging.packages.WordprocessingMLPackage.load(WordprocessingMLPackage.java:172) 

As mentioned above, I am using JDK 6, so this should have been impossible. But the above message is suppressed inside Docx4J and instead throws the following exception:

 2013-06-05 15:46:38.0392 ERROR Thread-18 com.jonathan.business.catalog.impl.ProductCatalogServiceImplBad [Content_Types].xml org.docx4j.openpackaging.exceptions.InvalidFormatException: Bad [Content_Types].xml at org.docx4j.openpackaging.contenttype.ContentTypeManager.parseContentTypesFile(ContentTypeManager.java:699) at org.docx4j.openpackaging.io.LoadFromZipNG.process(LoadFromZipNG.java:206) at org.docx4j.openpackaging.io.LoadFromZipNG.get(LoadFromZipNG.java:193) at org.docx4j.openpackaging.packages.OpcPackage.load(OpcPackage.java:301) at org.docx4j.openpackaging.packages.OpcPackage.load(OpcPackage.java:245) at org.docx4j.openpackaging.packages.OpcPackage.load(OpcPackage.java:195) at org.docx4j.openpackaging.packages.OpcPackage.load(OpcPackage.java:178) at org.docx4j.openpackaging.packages.WordprocessingMLPackage.load(WordprocessingMLPackage.java:172) Caused by: java.lang.NullPointerException at org.docx4j.openpackaging.contenttype.ContentTypeManager.parseContentTypesFile(ContentTypeManager.java:666) ... 12 more 2013-06-05 15:46:38.0392 ERROR Thread-18 com.jonathan.business.catalog.impl.ProductCatalogServiceImplBad [Content_Types].xml org.docx4j.openpackaging.exceptions.InvalidFormatException: Bad [Content_Types].xml at org.docx4j.openpackaging.contenttype.ContentTypeManager.parseContentTypesFile(ContentTypeManager.java:699) at org.docx4j.openpackaging.io.LoadFromZipNG.process(LoadFromZipNG.java:206) at org.docx4j.openpackaging.io.LoadFromZipNG.get(LoadFromZipNG.java:193) at org.docx4j.openpackaging.packages.OpcPackage.load(OpcPackage.java:301) at org.docx4j.openpackaging.packages.OpcPackage.load(OpcPackage.java:245) at org.docx4j.openpackaging.packages.OpcPackage.load(OpcPackage.java:195) at org.docx4j.openpackaging.packages.OpcPackage.load(OpcPackage.java:178) at org.docx4j.openpackaging.packages.WordprocessingMLPackage.load(WordprocessingMLPackage.java:172) Caused by: java.lang.NullPointerException at org.docx4j.openpackaging.contenttype.ContentTypeManager.parseContentTypesFile(ContentTypeManager.java:666) ... 12 more 

I tried this as suggested in the Docx4J forum, but to no avail.

This question also does not provide an answer.

Java 6 should have an internal JAXB implementation, but so far I have tried:

  • doesn't put jaxb jarb in library
  • installing jaxb jar versions: 2.1.7, 2.2.4, also 2.2.6, does not work.

Also, if any help, the same method works, if I run it from void main, it just does not work if it is running from the WebLogic server, so I am convinced that the problem is loading the class.

+2
source share
1 answer

To get docx4j while working with Weblogic 12c, you can either upgrade eclipselink or go to the JAXB reference implementation.

To update Eclipselink, see http://www.docx4java.org/forums/weblogic-f25/how-to-update-to-eclipselink-2-5-in-web-t1574.html

http://www.docx4java.org/forums/weblogic-f25/classcastexception-in-weblogic-12c-t1643.html#p5675 suggests switching to JAXB RI - this is the best approach at the moment.

Please note that to use the Eclipselink JAXB implementation with docx4j you must use docx4j 3 beta or later.

0
source

Source: https://habr.com/ru/post/1489244/


All Articles