首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Apache 4.3.7 JAXB jakarta.xml.bind.JAXBException:在模块路径或类路径上未找到Jakarta绑定-API的实现

Apache 4.3.7 JAXB jakarta.xml.bind.JAXBException:在模块路径或类路径上未找到Jakarta绑定-API的实现
EN

Stack Overflow用户
提问于 2022-09-19 16:00:51
回答 1查看 86关注 0票数 0

我想从部署在Karaf4.3.7,OpenJDK 17上的包中使用JAXB来封送解编组,它在单元测试中工作,但在Karaf中不起作用。

我在Karaf收到了这个例外:

jakarta.xml.bind.JAXBException: jakarta.xml.bind.JAXBException的实现还没有在模块路径或类路径上找到。在jakarta.xml.bind.ContextFinder.newInstance(ContextFinder.java:252) ~!/:4.0.0在jakarta.xml.bind.ContextFinder.newInstance(ContextFinder.java:240) ~!/:4.0.0在jakarta.xml.bind.ContextFinder.find(ContextFinder.java:381) ~!/:4.0.0在jakarta.xml.bind.JAXBContext.newInstance(JAXBContext.java:605) ~!/:4.0.0在jakarta.xml.bind.JAXBContext.newInstance(JAXBContext.java:546) ~!/:4.0.0

我在Karaf上一个接一个地尝试了多个JAXB实现:

代码语言:javascript
运行
复制
           <groupId>org.eclipse.persistence</groupId>
            <artifactId>org.eclipse.persistence.moxy</artifactId>
            <version>4.0.0-RC2</version>
        </dependency>
        <dependency>
            <groupId>jakarta.xml.bind</groupId>
            <artifactId>jakarta.xml.bind-api</artifactId>
            <version>4.0.0</version>
        </dependency>
        <dependency>
            <groupId>com.sun.xml.bind</groupId>
            <artifactId>jaxb-impl</artifactId>
            <version>4.0.0</version>
        </dependency>
        <dependency>
            <groupId>org.glassfish.jaxb</groupId>
            <artifactId>jaxb-runtime</artifactId>
            <version>4.0.0</version>
        </dependency>

我还为Moxy尝试了jaxb.properties:

javax.xml.bind.context.factory=org.eclipse.persistence.jaxb.JAXBContextFactory jakarta.xml.bind.context.factory=org.eclipse.persistence.jaxb.JAXBContextFactory jakarta.xml.bind.JAXBContextFactory=org.eclipse.persistence.jaxb.JAXBContextFactory

我还尝试使用已安装的Karaf功能:

jaxb cxf-jaxb

但是,在使用:

JAXBContext context =JAXBContext.newInstance(类);JAXBContext context =JAXBContext clazz.getClassLoader();

唯一起作用的,但不是所有情况下,例如@XmlEnum都失败的是:

org.eclipse.persistence.jaxb.JAXBContextFactory JAXBContext context =

.createContext(类,null);

我查看了各种帖子,但它们通常不写关于OSGI环境的文章。他们只需在Java 11或更高版本上添加JAXB实现,就可以工作了。

我遗漏了什么?

EN

回答 1

Stack Overflow用户

发布于 2022-09-19 18:28:56

最后,我让它与以下内容一起工作:

Maven:

代码语言:javascript
运行
复制
 <dependency>
   <groupId>org.eclipse.persistence</groupId>
   <artifactId>org.eclipse.persistence.moxy</artifactId>
   <version>4.0.0-RC2</version>
 </dependency>

Karaf功能:

代码语言:javascript
运行
复制
<bundle>mvn:org.eclipse.persistence/org.eclipse.persistence.asm/9.3.0</bundle>
<bundle>mvn:org.eclipse.persistence/org.eclipse.persistence.core/4.0.0-RC2</bundle>
<bundle>mvn:org.eclipse.persistence/org.eclipse.persistence.moxy/4.0.0-RC2</bundle>
<bundle>mvn:jakarta.xml.bind/jakarta.xml.bind-api/4.0.0</bundle>

在Java中:

代码语言:javascript
运行
复制
JAXBContext context = org.eclipse.persistence.jaxb.JAXBContextFactory
            .createContext(classes, null);

我缺少的部分是显式地将eclipse持久性包导入到使用JAXB的所有包中,bnd maven插件:

代码语言:javascript
运行
复制
Import-Package: org.eclipse.persistence.internal.jaxb.json.schema.model,   \
            org.eclipse.persistence.internal.jaxb.json.schema,         \
            org.eclipse.persistence.internal.jaxb.many,                \
            org.eclipse.persistence.internal.jaxb,                     \
            org.eclipse.persistence.jaxb.attachment,                   \
            org.eclipse.persistence.jaxb.compiler.builder.helper,      \
            org.eclipse.persistence.jaxb.compiler.builder,             \
            org.eclipse.persistence.jaxb.compiler.facets,              \
            org.eclipse.persistence.jaxb.compiler,                     \
            org.eclipse.persistence.jaxb.dynamic.metadata,             \
            org.eclipse.persistence.jaxb.dynamic,                      \
            org.eclipse.persistence.jaxb.javamodel.oxm,                \
            org.eclipse.persistence.jaxb.javamodel.reflection,         \
            org.eclipse.persistence.jaxb.javamodel.xjc,                \
            org.eclipse.persistence.jaxb.javamodel,                    \
            org.eclipse.persistence.jaxb.json,                         \
            org.eclipse.persistence.jaxb.metadata,                     \
            org.eclipse.persistence.jaxb.plugins,                      \
            org.eclipse.persistence.jaxb.rs,                           \
            org.eclipse.persistence.jaxb.xmlmodel,                     \
            org.eclipse.persistence.jaxb,*
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73776215

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档