我正在尝试从我的 Micronaut 项目构建一个 GraalVM 本机应用程序。我在其中使用 JAXB 来读取和写入一些 XML 文件。该应用程序可以正常运行,直接运行它或构建一个 jar 文件并运行它。但是,当我使用 micronaut-maven-plugin 将其构建为原生图像时,当涉及到 XML 部分时,图像总是会崩溃。
<!-- JAXB API only -->
<dependency>
<groupId>jakarta.xml.bind</groupId>
<artifactId>jakarta.xml.bind-api</artifactId>
<version>2.3.3</version>
</dependency>
<!-- JAXB Implementation -->
<dependency>
<groupId>com.sun.xml.bind</groupId>
<artifactId>jaxb-impl</artifactId>
<version>2.3.7</version>
</dependency>
<dependency>
<groupId>org.glassfish.jaxb</groupId>
<artifactId>jaxb-runtime</artifactId>
<version>2.3.7</version>
</dependency>
它返回的错误是这样的:
[main] ERROR io.micronaut.runtime.Micronaut - Error starting Micronaut server: Error starting HTTP server: javax.xml.bind.JAXBException
- with linked exception:
[java.lang.NoSuchMethodException: com.sun.xml.bind.v2.ContextFactory.createContext([Ljava.lang.Class;, java.util.Map)]
io.micronaut.http.server.exceptions.HttpServerException: Error starting HTTP server: javax.xml.bind.JAXBException
- with linked exception:
[java.lang.NoSuchMethodException: com.sun.xml.bind.v2.ContextFactory.createContext([Ljava.lang.Class;, java.util.Map)]
at io.micronaut.servlet.engine.server.AbstractServletServer.start(AbstractServletServer.java:92)
at io.micronaut.servlet.engine.server.AbstractServletServer.start(AbstractServletServer.java:34)
at io.micronaut.runtime.Micronaut.lambda$start$2(Micronaut.java:81)
at [email protected]/java.util.Optional.ifPresent(Optional.java:178)
at io.micronaut.runtime.Micronaut.start(Micronaut.java:79)
at io.micronaut.runtime.Micronaut.run(Micronaut.java:323)
at io.micronaut.runtime.Micronaut.run(Micronaut.java:309)
at fr.tas.co2m.Application.main(Application.java:29)
Caused by: java.lang.RuntimeException: javax.xml.bind.JAXBException
- with linked exception:
[java.lang.NoSuchMethodException: com.sun.xml.bind.v2.ContextFactory.createContext([Ljava.lang.Class;, java.util.Map)]
at fr.tas.co2m.Application$OnStartupEventListener.onApplicationEvent(Application.java:60)
at fr.tas.co2m.Application$OnStartupEventListener.onApplicationEvent(Application.java:32)
at io.micronaut.context.event.ApplicationEventPublisherFactory.notifyEventListeners(ApplicationEventPublisherFactory.java:262)
at io.micronaut.context.event.ApplicationEventPublisherFactory.access$200(ApplicationEventPublisherFactory.java:60)
at io.micronaut.context.event.ApplicationEventPublisherFactory$2.publishEvent(ApplicationEventPublisherFactory.java:229)
at io.micronaut.context.DefaultBeanContext.publishEvent(DefaultBeanContext.java:1703)
at io.micronaut.servlet.engine.server.AbstractServletServer.lambda$start$0(AbstractServletServer.java:88)
at [email protected]/java.util.Optional.ifPresent(Optional.java:178)
at io.micronaut.servlet.engine.server.AbstractServletServer.start(AbstractServletServer.java:81)
... 7 common frames omitted
Caused by: javax.xml.bind.JAXBException: null
at javax.xml.bind.ContextFinder.newInstance(ContextFinder.java:259)
at javax.xml.bind.ContextFinder.newInstance(ContextFinder.java:240)
at javax.xml.bind.ContextFinder.find(ContextFinder.java:363)
at javax.xml.bind.JAXBContext.newInstance(JAXBContext.java:691)
at javax.xml.bind.JAXBContext.newInstance(JAXBContext.java:632)
at fr.tas.co2m.api.services.EquipmentRequestService.parseReprocessingInputFile(EquipmentRequestService.java:17)
at fr.tas.co2m.api.services.InitService.startReprocessing(InitService.java:64)
at fr.tas.co2m.Application$OnStartupEventListener.onApplicationEvent(Application.java:51)
... 15 common frames omitted
Caused by: java.lang.NoSuchMethodException: com.sun.xml.bind.v2.ContextFactory.createContext([Ljava.lang.Class;, java.util.Map)
at [email protected]/java.lang.Class.getMethod(DynamicHub.java:2227)
at javax.xml.bind.ContextFinder.newInstance(ContextFinder.java:249)
... 22 common frames omitted
Any help would be appreciated.