当前位置: 首页 > 面试题库 >

使用jaxb api的java类无法在jira中失败:提供程序com.sun.xml.bind.v2.ContextFactory未找到

艾才良
2023-03-14
问题内容

我正在为Jira编写一个插件,其中涉及XML文档的解析。我正在使用JAXB来做到这一点(将XML转换为pojos,反之亦然),所以有一个使用JAXB从pojos生成XML的类。看起来像…

import javax.xml.bind.*;

Class Parser {
  public void m1() {
    ...
    // code which uses classes in javax.xml.bind.*
  }

  public static void main(String args[]){
   Parser p=new Parser();
   p.m1();

  } 
}

提到的软件包将随JDK发行版(rt.jar)一起提供。因此,我没有继续进行其他任何课程。

当我使用“ java”从命令行启动它时,它工作正常。但是,当我将其打包为jar并将其作为插件放入Jira时,它失败并显示以下错误

javax.xml.bind.JAXBException: Provider com.sun.xml.bind.v2.ContextFactory not found
 - with linked exception:
[java.lang.ClassNotFoundException: com.sun.xml.bind.v2.ContextFactory]
        at javax.xml.bind.ContextFinder.newInstance(ContextFinder.java:152)
        at javax.xml.bind.ContextFinder.find(ContextFinder.java:299)
        at javax.xml.bind.JAXBContext.newInstance(JAXBContext.java:372)
        at javax.xml.bind.JAXBContext.newInstance(JAXBContext.java:337)

这是在同一台机器上。我能看到的唯一区别与从命令行启动不同,当我在Jira中部署它时,它不是通过实例化来调用main()而是m1()。

我想知道发生了什么!在同一台机器上。我不知道Jira是如何启动应用程序的(因为我是从命令行启动的)。


问题答案:

com.sun.xml.bind程序包是JAXB
RI(http://jaxb.dev.java.net/)的一部分,因此您可能在类路径中的某个位置有该程序包。

Java6在com.sun.xml.internal.bind软件包中包含了它自己的JAXB版本,因此您通常不需要Java6中的RI。

可以 使RI 与Java6一起使用,但这是艰巨的任务,通常会遇到此类问题。



 类似资料:
  • 由于这个问题可能可以更普遍地描述,我希望有人有一些解决这个问题的经验。 如何提供MP3和AAC解码/回放的支持?

  • 我正在尝试使用JPA和EclipseLink来持久化元素。所以我创建了一个类来持久化 等等。我创建了一个类来“使用”: 然后,我有以下persistence.xml: 但是,即使我改变了属性,我也有同样的错误: 线程"main"中的异常javax.persistence.PeristenceException:没有名为MyPU的EntityManager的持久性提供程序(当调用工厂=Persist

  • 在Mac OS X上,任何Java命令的输出都以"无法在"/usr"处找到$JAVA_HOME"作为前缀,继续使用系统提供的Java..."。例如,

  • 问题内容: 我正在尝试使用bouncycastle使用公共密钥来加密文件。我已经通过编程方式注册了提供程序: 我成功创建了公共密钥对象。 当我使用PGPEncryptedDataGenerator和密钥加密文件时,出现ClassNotFound异常。 似乎提供程序在运行时找不到此类,尽管我确定我有它的jar … 我在Tomcat上运行我的应用程序。使用Maven处理依赖关系- 我放入的充气城堡ja

  • 这是我的清单文件代码 我的新资源xml文件的代码是 我的主要活动代码是 我不断地发现这个错误: 致命异常:主进程:com。穆克什。Androiddigiwrite,PID:30365 java。lang.NullPointerException:尝试调用虚拟方法“android”。所容纳之物res.XmlResourceParser。所容纳之物下午。ProviderInfo。在android上的空

  • 我试图嵌入下载和共享PDF文件,由另一个PDF阅读器应用程序(DropBox,驱动器PDF阅读器或Adobe阅读器)在Android上使用FileProvider的方式。 然而,我一直得到以下例外: 我首先将URL发送到Android执行下载,然后使用 我的执行情况如下: file_paths.xml Androidanifest.xml 主要活动: 最后,从我的自定义广播接收器: 取自使用通常的