Apache POI / DOCX4J not working in Script Runner for JIRA Edited

Hello,

we use JIRA Software 7.3.5 with Adaptavist Script Runner for JIRA 4.3.16.

I downloaded Apache POI 3.16 and put the following files into atlassian-jira/WEB-INF/lib:

  • poi-3.16.jar
  • poi-ooxml-3.16.jar
  • poi-ooxml-schemas-3.16.jar
  • xmlbeans-2.6.0.jar

I tried this code in the Script Console in the admin section

import java.io.File
import java.io.FileInputStream
import java.io.FileOutputStream

import org.apache.poi.xwpf.usermodel.*

File inputFile = new File("C:\\Program Files\\Atlassian\\Application Data\\JIRA\\scripts\\files\\input.docx");
FileInputStream fis = new FileInputStream(inputFile.getAbsolutePath()); 
FileOutputStream fos = new FileOutputStream("C:\\Program Files\\Atlassian\\Application Data\\JIRA\\scripts\\files\\output.docx");

XWPFDocument document = new XWPFDocument(fis)
document.write(fos)

and got the following error:

javax.xml.stream.FactoryConfigurationError: Provider for class javax.xml.stream.XMLEventFactory cannot be created
	at org.apache.poi.openxml4j.opc.internal.marshallers.PackagePropertiesMarshaller.<clinit>(PackagePropertiesMarshaller.java:41)
	at org.apache.poi.openxml4j.opc.OPCPackage.init(OPCPackage.java:161)
	at org.apache.poi.openxml4j.opc.OPCPackage.<init>(OPCPackage.java:141)
	at org.apache.poi.openxml4j.opc.ZipPackage.<init>(ZipPackage.java:97)
	at org.apache.poi.openxml4j.opc.OPCPackage.open(OPCPackage.java:324)
	at org.apache.poi.util.PackageHelper.open(PackageHelper.java:37)
	at org.apache.poi.xwpf.usermodel.XWPFDocument.<init>(XWPFDocument.java:116)
	at testApachePOI.run(testApachePOI.groovy:11)
Caused by: java.lang.RuntimeException: Provider for class javax.xml.stream.XMLEventFactory cannot be created
	... 8 more
Caused by: java.util.ServiceConfigurationError: javax.xml.stream.XMLEventFactory: Provider com.ctc.wstx.stax.WstxEventFactory not found
	... 8 more

I tried then the same with the docx4j library:

import java.io.File
import org.docx4j.Docx4J
import org.docx4j.openpackaging.packages.WordprocessingMLPackage

WordprocessingMLPackage wordMLPackage = Docx4J.load(new File("C:\\Program Files\\Atlassian\\Application Data\\JIRA\\scripts\\files\\input.docx"))
Docx4J.save(wordMLPackage, new File("C:\\Program Files\\Atlassian\\Application Data\\JIRA\\scripts\\files\\output.docx"))

and got this error:

javax.xml.stream.FactoryConfigurationError: Provider for class javax.xml.stream.XMLInputFactory cannot be created
	at org.docx4j.openpackaging.contenttype.ContentTypeManager.parseContentTypesFile(ContentTypeManager.java:728)
	at org.docx4j.openpackaging.io3.Load3.get(Load3.java:134)
	at org.docx4j.openpackaging.packages.OpcPackage.load(OpcPackage.java:462)
	at org.docx4j.openpackaging.packages.OpcPackage.load(OpcPackage.java:379)
	at org.docx4j.openpackaging.packages.OpcPackage.load(OpcPackage.java:270)
	at org.docx4j.openpackaging.packages.OpcPackage.load(OpcPackage.java:250)
	at org.docx4j.openpackaging.packages.WordprocessingMLPackage.load(WordprocessingMLPackage.java:168)
	at org.docx4j.Docx4J.load(Docx4J.java:236)
	at org.docx4j.Docx4J$load.call(Unknown Source)
	at testDocx.run(testDocx.groovy:5)
Caused by: java.lang.RuntimeException: Provider for class javax.xml.stream.XMLInputFactory cannot be created
	... 10 more
Caused by: java.util.ServiceConfigurationError: javax.xml.stream.XMLInputFactory: Provider com.ctc.wstx.stax.WstxInputFactory not found
	... 10 more

My goal is to open a word document (docx) during a workflow transition in order to manipulate some fields and to save the new document.

I did some searching on the internet and i found out, that apache poi needs prior java 6 one of these libs to work: xml-apis.jar, stax-apis.jar or xercesImpl.jar.

In my lib folder the files are all there:

  • xml-apis-1.3.04.jar
  • xml-apis-ext-1.3.04.jar
  • wstx-asl-3.2.4.jar
  • xercesImpl-2.9.1.jar

According to the systems information tab in the admin section, our jira is using java 1.8.0_102. The FAQ section from Apache POI (https://poi.apache.org/faq.html#faq-N101E6 No. 18) suggests to disable the above mentioned libs, if you use java 6+. But this solution is not possible, because some plugins need these dependencies.

I hope someone can help me to sort this out.

Thank you in advance

1 answer

1 accepted

This widget could not be displayed.

I have created a post-function to test the codes above and it worked fine.

In both cases the new docx file will be created.

My main problem ist solved now, but i am curious why the codes wont run in the Script Console in the admin section. I hope someone can answer this question.

Suggest an answer

Log in or Sign up to answer
Atlassian Summit 2018

Meet the community IRL

Atlassian Summit is an excellent opportunity for in-person support, training, and networking.

Learn more
Community showcase
Posted Aug 06, 2018 in Jira Service Desk

A is for Activate: Share your top Jira Service Desk onboarding tips for new users!

Hi, everyone! Molly here from the Jira Service Desk Product Marketing Team :).  In the spirit of this month's  august-challenge, we're sourcing stories of Jira Service Desk activation fro...

576 views 25 15
Join discussion

Atlassian User Groups

Connect with like-minded Atlassian users at free events near you!

Find a group

Connect with like-minded Atlassian users at free events near you!

Find my local user group

Unfortunately there are no AUG chapters near you at the moment.

Start an AUG

You're one step closer to meeting fellow Atlassian users at your local meet up. Learn more about AUGs

Groups near you