带有 GraalVM 原生镜像的 Micronaut 应用程序

问题描述 投票:0回答:0

我正在尝试从我的 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.
java xml jaxb micronaut graalvm
© www.soinside.com 2019 - 2024. All rights reserved.