Я пытаюсь использовать veraPDF в проекте Quarkus. Из-за других зависимостей его нельзя запустить как собственный образ, поэтому это только JVM.
Если я запускаю тесты внутри сборки, все работает нормально. Однако при запуске в режиме разработки и попытке проверки PDF-файла возникает ошибка:
org.jboss.resteasy.spi.UnhandledException: java.lang.NoClassDefFoundError: Could not initialize class org.verapdf.pdfa.validation.profiles.ProfileDirectoryImpl
...
Caused by: java.lang.ExceptionInInitializerError: Exception java.lang.NoClassDefFoundError: javax/activation/DataSource [in thread \"executor-thread-1\"]
at com.sun.xml.bind.v2.model.impl.RuntimeBuiltinLeafInfoImpl.<clinit>(RuntimeBuiltinLeafInfoImpl.java:444)
at com.sun.xml.bind.v2.model.impl.RuntimeTypeInfoSetImpl.<init>(RuntimeTypeInfoSetImpl.java:33)
at com.sun.xml.bind.v2.model.impl.RuntimeModelBuilder.createTypeInfoSet(RuntimeModelBuilder.java:98)
at com.sun.xml.bind.v2.model.impl.RuntimeModelBuilder.createTypeInfoSet(RuntimeModelBuilder.java:54)
at com.sun.xml.bind.v2.model.impl.ModelBuilder.<init>(ModelBuilder.java:132)
at com.sun.xml.bind.v2.model.impl.RuntimeModelBuilder.<init>(RuntimeModelBuilder.java:62)
at com.sun.xml.bind.v2.runtime.JAXBContextImpl.getTypeInfoSet(JAXBContextImpl.java:425)
at com.sun.xml.bind.v2.runtime.JAXBContextImpl.<init>(JAXBContextImpl.java:273)
at com.sun.xml.bind.v2.runtime.JAXBContextImpl.<init>(JAXBContextImpl.java:109)
at com.sun.xml.bind.v2.runtime.JAXBContextImpl$JAXBContextBuilder.build(JAXBContextImpl.java:1126)
at com.sun.xml.bind.v2.ContextFactory.createContext(ContextFactory.java:135)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:568)
at javax.xml.bind.ContextFinder.newInstance(ContextFinder.java:288)
at javax.xml.bind.ContextFinder.newInstance(ContextFinder.java:277)
at javax.xml.bind.ContextFinder.find(ContextFinder.java:400)
at javax.xml.bind.JAXBContext.newInstance(JAXBContext.java:721)
at javax.xml.bind.JAXBContext.newInstance(JAXBContext.java:662)
at org.verapdf.core.XmlSerialiser.typeFromXml(XmlSerialiser.java:133)
at org.verapdf.core.XmlSerialiser.typeFromXml(XmlSerialiser.java:118)
at org.verapdf.pdfa.validation.profiles.Profiles.profileFromXml(Profiles.java:470)
at org.verapdf.pdfa.validation.profiles.ProfileDirectoryImpl.makeVeraProfileDir(ProfileDirectoryImpl.java:151)
at org.verapdf.pdfa.validation.profiles.ProfileDirectoryImpl.<clinit>(ProfileDirectoryImpl.java:48)
Затем я добавил javax.activation:javax.activation-api:1.2.0
в свой POM. Когда я вывожу путь к классам, я вижу его в тесте. Однако его нет, когда я просматриваю Dev JAR MANIFEST.MF
. Почему Quarkus исключает его из моих зависимостей?
Кто-нибудь пытался использовать veraPDF в Quarkus?
Вы можете попробовать использовать другую зависимость veraPDF, которая зависит от jakarta вместо javax. Описано здесь.
Недостаточно использовать
org.verapdf:validation-model-jakarta
, нужно еще использоватьorg.verapdf:core-jakarta
.