首页 > 解决方案 > 没有找到 Jakarta XML Binding-API 的实现?

问题描述

我的背景:

-runbundles: \
  org.apache.felix.gogo.command;version='[1.1.2,1.1.3)',\
  org.apache.felix.gogo.runtime;version='[1.1.4,1.1.5)',\
  org.apache.felix.gogo.shell;version='[1.1.4,1.1.5)',\
  org.apache.commons.commons-fileupload;version='[1.4.0,1.4.1)',\
  org.apache.commons.commons-io;version='[2.8.0,2.8.1)',\
  org.apache.felix.webconsole;version='[4.6.0,4.6.1)',\
  org.apache.felix.http.jetty;version='[4.1.6,4.1.7)',\
  org.apache.felix.http.servlet-api;version='[1.1.2,1.1.3)',\
  org.apache.felix.scr;version='[2.1.24,2.1.25)',\
  org.eclipse.equinox.cm;version='[1.5.0,1.5.1)',\
  org.eclipse.equinox.console;version='[1.4.300,1.4.301)',\
  org.eclipse.equinox.device;version='[1.1.100,1.1.101)',\
  org.eclipse.osgi.services;version='[3.10.0,3.10.1)',\
  org.eclipse.osgi.util;version='[3.6.0,3.6.1)',\
  ch.qos.logback.classic;version='[1.2.3,1.2.4)',\
  ch.qos.logback.core;version='[1.2.3,1.2.4)',\
  org.apache.felix.logback;version='[1.0.2,1.0.3)',\
  slf4j.api;version='[1.7.30,1.7.31)',\
  com.sun.activation.jakarta.activation;version='[2.0.1,2.0.2)',\
  jakarta.xml.bind-api;version='[3.0.1,3.0.2)',\
  com.sun.xml.bind.jaxb-osgi;version='[3.0.1,3.0.2)'

当我启动应用程序时,我得到一个

jakarta.xml.bind.JAXBException: Implementation of Jakarta XML Binding-API has not been found on module path or classpath.
 - with linked exception:
[java.lang.ClassNotFoundException: org.glassfish.jaxb.runtime.v2.ContextFactory]
  at jakarta.xml.bind.ContextFinder.newInstance(ContextFinder.java:255)
  at jakarta.xml.bind.ContextFinder.newInstance(ContextFinder.java:243)
  at jakarta.xml.bind.ContextFinder.find(ContextFinder.java:407)
  at jakarta.xml.bind.JAXBContext.newInstance(JAXBContext.java:691)
  at jakarta.xml.bind.JAXBContext.newInstance(JAXBContext.java:632)

如果我添加org.glassfish.jaxb.runtime;version='[3.0.1,3.0.2)' 到 runbundles 列表,它不会改变任何东西(同样的例外)。然后,如果我添加-runpath: org.glassfish.jaxb.runtime;version='[3.0.1,3.0.2)'到 bnd.launch 文件:它也不会改变任何东西(同样的例外)。

我做错了什么??谢谢

标签: jaxbosgibnd

解决方案


您在 Java 1.9 或更高版本上运行吗?(错误消息涉及模块路径。)问题可能是在以后的版本中不再从 JVM 导出 JAXB。这有时会导致 glassfish 的类加载失败,而不会说出根本原因。

您可以添加-runvm -v:class以获取有关类加载的更多信息。


推荐阅读