当前位置: 首页 > 知识库问答 >
问题:

创建JAXB上下文的JAXBException

董胡媚
2023-03-14

当我将应用程序作为独立的Java程序运行时,它运行得很好。当我将其作为applet运行时,它会通过以下堆栈跟踪抛出JAXBException。

javax.xml.bind.JAXBException: jaxb.properties in package com/test/package does not contain the javax.xml.bind.context.factory property.
    at javax.xml.bind.ContextFinder.find(Unknown Source)
    at javax.xml.bind.JAXBContext.newInstance(Unknown Source)
    at javax.xml.bind.JAXBContext.newInstance(Unknown Source)

当我添加jaxb.properties时,我收到以下错误-

javax.xml.bind.JAXBException
 - with linked exception:
[java.lang.NoSuchMethodException: com.sun.xml.internal.ws.developer.JAXBContextFactory.createContext([Ljava.lang.Class;, java.util.Map)]
    at javax.xml.bind.ContextFinder.newInstance(Unknown Source)
    at javax.xml.bind.ContextFinder.newInstance(Unknown Source)
    at javax.xml.bind.ContextFinder.find(Unknown Source)
    at javax.xml.bind.JAXBContext.newInstance(Unknown Source)
    at javax.xml.bind.JAXBContext.newInstance(Unknown Source)

我在类路径中添加了以下罐子 -

  • 2.2.2.1
  • jsr311-api-1.1.1
  • 球衣核心-1.2
  • 泽西-客户端-1.2

导致此错误的原因。我是否缺少任何依赖项。

编辑:我在浏览器和开发环境中使用Java 7 u 59。

共有3个答案

晋功
2023-03-14

根据您提供的信息,这是我的输入。请注意任何需要您输入/试用的内容,我已将其标记为

首先

a.验证您没有看到多个java版本被检查到:widnows-

关于第一个异常:javax.xml.bind。JAXBException:jaxb。包com/test/package中的属性不包含javax.xml.bind.context。工厂属性

这是JRE无法定位JAXB实现的问题。请浏览URL并找到“发现JAXB实现”部分。它提到以下4个位置用于识别JAXB实现:

  1. 在包级目录中查找 jaxb.属性
  2. 系统属性JAXB_CONTEXT_FACTORY
  3. 在所有罐子中查找 /元-INF/services/javax.xml.bind.JAXB上下文文件
  4. 缺省特定于 JVM 的实现。

现在你只有在Applet not for JAVA应用程序的情况下才会得到这个例外。你提到java应用程序和小程序都使用相同的JDK附加jar。我能想到小程序和应用程序环境之间区别的唯一原因可能是由于上面的第2点。

<代码>

b.当运行java应用程序时,你能检查你是否指定JAXB_CONTEXT_FACTORY作为系统属性吗(可能通过eclipse或其他什么)

C。也许您可以在代码中打印所有系统属性:

Properties props = System.getProperties();
props.list(System.out);

并验证那里是否设置了JAXB上下文工厂?

关于第二个例外:添加jaxb之后。属性文件,您收到了第二个异常。这可能是由于以下原因造成的:-exception stack trace显示您可能指定了com.sun.xml.internal.ws.developer。JAXB中的JAXBContextFactory。属性文件。现在,如果您再次看到URL并找到JAXBContext提供程序的第一个SPEC REQUIREMENT:该提供程序必须提供包含以下方法签名的实现类:

public static JAXBContext createContext( Class[] classes, Map<String,Object> properties ) throws JAXBException

现在,如果您搜索< code > com . sun . XML . internal . ws . developer . jaxbcontextfactory 类的内容,您可以在此站点看到该类不包含< code > create context()方法;它只定义了一个方法调用< code>createJAXBContext()。请注意,此类由< code > com . sun . XML . internal . bind . API . JAXB context 内部调用,它是< code > javax . XML . bind . JAXB context 类的扩展。

<代码>

d、 您应该指定一个适当的值javax.xml.bind.context。jaxb中的工厂。properties文件,它指向实现createConex()operation的类。

最后,最后一点:您有可能在jaxb.properties中指定了正确的工厂,但是它的值可能不会被运行时选择,而是运行时从上面第1-4点中指定的其他机制中选择JAXB实现值。这可能是JVM运行时中存在多个JAXB工厂实现的情况。

<代码>

e.在这种情况下,最好使用本文中指定的Java认可覆盖机制

卢志行
2023-03-14

首先,您需要检查是否使用相同的 JRE。你可以在这里做到这一点。正如@LarsGendner提到的 - 下载JAXB 2.2.*jar,因为1.2已经过时了。

第二:查看本主题:如何从未签名的小程序中使用 JAXB(无需签名)?

冉弘化
2023-03-14

泽西1.2版似乎过时了。我认为泽西2.21是当前版本。此外,您应该检查您正在使用哪个JDK/JRE来运行您的程序。小程序运行在与您作为应用程序启动时相同的环境/Java版本中吗?

 类似资料:
  • 我基本上按照此处找到的Spring教程编写了一个简单的 SOAP endpoint:https://spring.io/guides/gs/producing-web-service/ 下面是用于拦截请求的类(假设注入了存储库对象): 服务运行正常。我遇到的一个问题是性能,特别是响应的解组。平均来说,将对象解组到XML响应中需要几秒钟。有没有办法缓存/注入Spring在这个过程中使用的JaxbCo

  • 我正在开发一个利用和的项目。为了在我的程序中使用顶点和片段着色器,我需要使用的最小OpenGL版本是。我检查了OpenGL版本和GLSL版本,结果如下: 我在Linux操作系统上使用Eclipse作为我的C++开发IDE(我使用的这个特定的disdo是PCLinuxOS)。

  • 问题内容: 当我调用使用 CXF 构建的特定静态服务方法时,出现以下错误,任何人都知道为什么以及如何解决它? 发生JAXBException:com.octory.ws.dto类。在此上下文中, ProfileDto 或其任何超类都不为人知。 以下是服务方法和相关的DTO: SearchResultDto: ProfileDto: 问题答案: 您的班级未在中引用。尝试添加到中。

  • 问题内容: 我想创建一个上下文增量,不确定我使用的术语是否正确。这是我的桌子 在这之后我做了 在MyISAM注意页面上给出的示例中,他们没有提供示例,该示例使用enum,这里我没有使用enum,但是他们没有提到它仅适用于enum。但是我得到的输出是 但我想这样 有人可以告诉我我在做什么错吗? 问题答案: 您必须交换索引的顺序: 我从手册中引用: 对于MyISAM表,可以 在多列索引的 第二 列上指

  • 我将Spring Boot与Spring集成在一起,我希望为每个<code>child() 此时此刻,我正在处理这个:(只有最相关的行) 我已经查看了SpringApplication ationBuilder方法,并且属性从父亲传播到孩子: 但是我需要动态加载一些属性,如下例所示: 从此示例中提取:Spring多个 imapAdapter 这是因为一些Spring集成组件将从配置文件中动态加载。

  • 我有REST(Resteasy)客户端运行在JBoss7.1下。从服务器返回的响应要求我使用自己的JAXB ObjectFactory,因为相同的Java类型映射到多个XML元素: 我这样构建RestEasy客户端: 为什么缺省的JAXB解编组器不接收我的ObjectFactory类并使用它?我使用本地绑定的RestEasy libs(JBoss提供的RestEasy模块是过时的)。