Ошибка JAXBException при создании jar файла
Я создаю JavaFX приложение, одной из функций которого является создание файла Word, для этого я использую библиотеку docx4j, когда я запускаю приложение из Intellij Idea, все работает правильно. Но когда я создаю jar файл (с помощью maven-shade-plugin), то при попытке создать файл word мне выдается ошибка
javax.xml.bind.JAXBException: Implementation of JAXB-API has not been found on module path or classpath.
- with linked exception:
[java.lang.ClassNotFoundException: com.sun.xml.internal.bind.v2.ContextFactory]
at javax.xml.bind.ContextFinder.newInstance(ContextFinder.java:131)
at javax.xml.bind.ContextFinder.find(ContextFinder.java:318)
at javax.xml.bind.JAXBContext.newInstance(JAXBContext.java:478)
at org.docx4j.jaxb.Context.<clinit>(Context.java:120)
at org.docx4j.openpackaging.parts.JaxbXmlPart.<init>(JaxbXmlPart.java:122)
at org.docx4j.openpackaging.parts.JaxbXmlPartXPathAware.<init>(JaxbXmlPartXPathAware.java:68)
at org.docx4j.openpackaging.parts.JaxbXmlPartAltChunkHost.<init>(JaxbXmlPartAltChunkHost.java:58)
at org.docx4j.openpackaging.parts.WordprocessingML.DocumentPart.<init>(DocumentPart.java:169)
at org.docx4j.openpackaging.parts.WordprocessingML.MainDocumentPart.<init>(MainDocumentPart.java:92)
at org.docx4j.openpackaging.packages.WordprocessingMLPackage.createPackage(WordprocessingMLPackage.java:430)
at org.docx4j.openpackaging.packages.WordprocessingMLPackage.createPackage(WordprocessingMLPackage.java:408)
at com.example.kinesio_helper.MyTab.createDoc(MyTab.kt:612)
at com.example.kinesio_helper.MyTab.access$createDoc(MyTab.kt:29)
at com.example.kinesio_helper.MyTab$btnClick$service$1$createTask$1.call(MyTab.kt:412)
at com.example.kinesio_helper.MyTab$btnClick$service$1$createTask$1.call(MyTab.kt:407)
at javafx.concurrent.Task$TaskCallable.call(Task.java:1426)
at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
at javafx.concurrent.Service.lambda$executeTask$6(Service.java:728)
at java.base/java.security.AccessController.doPrivileged(AccessController.java:399)
at javafx.concurrent.Service.lambda$executeTask$7(Service.java:727)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
at java.base/java.lang.Thread.run(Thread.java:833)
Caused by: java.lang.ClassNotFoundException: com.sun.xml.internal.bind.v2.ContextFactory
at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:641)
at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:188)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:520)
at javax.xml.bind.ServiceLoaderUtil.nullSafeLoadClass(ServiceLoaderUtil.java:92)
at javax.xml.bind.ServiceLoaderUtil.safeLoadClass(ServiceLoaderUtil.java:125)
at javax.xml.bind.ContextFinder.newInstance(ContextFinder.java:128)
... 22 more
org.docx4j.openpackaging.exceptions.Docx4JException: Error marshalling Content_Types
at org.docx4j.openpackaging.io3.stores.ZipPartStore.saveContentTypes(ZipPartStore.java:315)
at org.docx4j.openpackaging.io3.Save.save(Save.java:177)
at org.docx4j.openpackaging.packages.OpcPackage.save(OpcPackage.java:795)
at org.docx4j.openpackaging.packages.OpcPackage.save(OpcPackage.java:684)
at org.docx4j.openpackaging.packages.OpcPackage.save(OpcPackage.java:667)
at org.docx4j.openpackaging.packages.OpcPackage.save(OpcPackage.java:656)
at com.example.kinesio_helper.MyTab.createDoc(MyTab.kt:634)
at com.example.kinesio_helper.MyTab.access$createDoc(MyTab.kt:29)
at com.example.kinesio_helper.MyTab$btnClick$service$1$createTask$1.call(MyTab.kt:412)
at com.example.kinesio_helper.MyTab$btnClick$service$1$createTask$1.call(MyTab.kt:407)
at javafx.concurrent.Task$TaskCallable.call(Task.java:1426)
at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
at javafx.concurrent.Service.lambda$executeTask$6(Service.java:728)
at java.base/java.security.AccessController.doPrivileged(AccessController.java:399)
at javafx.concurrent.Service.lambda$executeTask$7(Service.java:727)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
at java.base/java.lang.Thread.run(Thread.java:833)
Caused by: java.lang.NullPointerException: Cannot invoke "javax.xml.bind.JAXBContext.createMarshaller()" because "org.docx4j.jaxb.Context.jcContentTypes" is null
at org.docx4j.openpackaging.contenttype.ContentTypeManager.marshal(ContentTypeManager.java:938)
at org.docx4j.openpackaging.io3.stores.ZipPartStore.saveContentTypes(ZipPartStore.java:311)
... 17 more
org.docx4j.openpackaging.exceptions.Docx4JException: Error marshalling Content_Types
У меня была такая проблема во время разработки, и я с ней справился, и все заработало в среде разработки, но при создании jar, эта ошибка вернулась.