Java 无法获取JAXBContext?

Java 无法获取JAXBContext?,java,jaxb,Java,Jaxb,在我的java项目中,我有一个用一些类生成的jar。我能够实例化jar中的类的实例: Alert a = new Alert(); 但我试图做到这一点: JAXBContext context = JAXBContext.newInstance(Alert.class); 我得到的运行时异常如下所示: java.lang.InternalError: 调用目标类上的反射时出错。确保所有引用的类都在类路径上:interface javax.xml.bind.annotation.adapte

在我的java项目中,我有一个用一些类生成的jar。我能够实例化jar中的类的实例:

Alert a = new Alert();
但我试图做到这一点:

JAXBContext context  = JAXBContext.newInstance(Alert.class);
我得到的运行时异常如下所示:

java.lang.InternalError: 调用目标类上的反射时出错。确保所有引用的类都在类路径上:interface javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter 例外:空

你知道会有什么问题吗?
谢谢

这发生在我身上,因为我定义了
XmlAdapter
实现,它们位于不同的JAR中,而不在类路径上。当尝试创建JAXBContext时,它需要JAXB类型使用这些适配器。现在我明白了这一点,这条信息更有意义,但仍然非常神秘
XmlJavaTypeAdapter
是注释接口,代码返回类路径上未定义的类类型
Class
,因此无法调用注释的
value()
方法

如果查看引发异常的代码,这是不可能的:

public Class More ...getClassValue(Annotation a, String name) {
  try {
    return (Class)a.annotationType().getMethod(name).invoke(a);
  } catch (IllegalAccessException e) {
    // impossible
    throw new IllegalAccessError(e.getMessage());
  } catch (InvocationTargetException e) {
    // impossible
    throw new InternalError(e.getMessage());
  } catch (NoSuchMethodException e) {
    throw new NoSuchMethodError(e.getMessage());
  }
}

如果没有丢失异常的原因,那就太好了。

您能显示
警报吗?消息很清楚,CLASSPATH中缺少某些类您正在运行的环境是什么(即Java SE、OSGi、Java VM之上的某些东西等等)?警报类看起来是这样的:@XmlAccessorType(XmlAccessType.FIELD)@XmlType(name=“Alert”,Propoder={“alertId”,})公共类警报实现可序列化的{some fields}我使用JavaEclipseAlso,当我将生成jar的项目导入到我的项目中时,我就可以得到JAXBContext了?我也有同样的问题,但它在Eclipse中作为Junit测试工作,但在我运行Ant Junit任务时不起作用。显然,Eclipse正在向我需要的类路径添加一些东西,而Ant没有。