java - NoClassDefFoundError: org/eclipse/persistence/internal/oxm/mappings/Field
问题描述
我正在创建一个基于 XML Schema 动态创建 XML 的 Java 代码。我为此使用 Jaxb。这是我的代码:
public class Testing2 {
private static void traverseProps(DynamicJAXBContext c, DynamicEntity e, DynamicType t, int level) throws DynamicException, InstantiationException, IllegalAccessException{
if (t!=null) {
// logger.info(indent(level) + "type [" + t.getName() + "] of class [" + t.getClassName() + "] has " + t.getNumberOfProperties() + " props");
for (String pName:t.getPropertiesNames()){
Class<?> clazz = t.getPropertyType(pName);
// logger.info(indent(level) + "prop [" + pName + "] in type: " + clazz);
//logger.info("prop [" + pName + "] in entity: " + e.get(pName));
if (clazz==null){
// need to create an instance of object
String updatedClassName = pName.substring(0, 1).toUpperCase() + pName.substring(1);
// logger.info(indent(level) + "Creating new type instance for " + pName + " using following class name: " + updatedClassName );
DynamicType child = c.getDynamicType("generated." + updatedClassName);
DynamicEntity childEntity = child.newDynamicEntity();
e.set(pName, childEntity);
traverseProps(c, childEntity, child, level+1);
} else {
// just set empty value
e.set(pName, clazz.newInstance());
}
}
} else {
// logger.warn("type is null");
}
}
public static void main(String[] args) throws FileNotFoundException, JAXBException, DynamicException, InstantiationException, IllegalAccessException {
// TODO Auto-generated method stub
String PATH_TO_XSD = "C:/.....XSD.xsd";
String YOUR_ROOT_TYPE = "Doc";
InputStream in = new FileInputStream(PATH_TO_XSD);
DynamicJAXBContext jaxbContext = DynamicJAXBContextFactory.createContextFromXSD(in, null, Thread.currentThread().getContextClassLoader(), null);
DynamicType rootType = jaxbContext.getDynamicType(YOUR_ROOT_TYPE);
DynamicEntity root = rootType.newDynamicEntity();
traverseProps(jaxbContext, root, rootType, 0);
}
}
尽管我添加了 jars:jaxb-xjc-2.2.11.jar 和 jaxb-core-2.3.0.jar,但我遇到了错误。谁能帮我调试问题:
Exception in thread "main" java.lang.NoClassDefFoundError: org/eclipse/persistence/internal/oxm/mappings/Field
at org.eclipse.persistence.jaxb.dynamic.DynamicJAXBContext$SchemaContextInput.createContextState(DynamicJAXBContext.java:284)
at org.eclipse.persistence.jaxb.JAXBContext.<init>(JAXBContext.java:174)
at org.eclipse.persistence.jaxb.dynamic.DynamicJAXBContext.<init>(DynamicJAXBContext.java:71)
at org.eclipse.persistence.jaxb.dynamic.DynamicJAXBContextFactory.createContextFromXSD(DynamicJAXBContextFactory.java:279)
at com.sap.Testing2.main(Testing2.java:48)
Caused by: java.lang.ClassNotFoundException: org.eclipse.persistence.internal.oxm.mappings.Field
at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:338)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
... 5 more
解决方案
推荐阅读
- c# - 标签应该打开一个新窗口,但它不适用于ieDriver
- vue.js - 设置自定义编辑器显示 kendoDropDownList 不是函数
- c++ - 运行代码时出现 C++ 编译器错误(seg fault core dumped)
- javascript - 在vue js中显示和隐藏框onclick
- javascript - 如果应用程序部署在集群上,则重复的 html 元素
- operating-system - MMU如何获取中断向量的物理地址?
- php - PhpMailer 不在邮件正文中嵌入图像但附加
- javascript - 如何在 WebStorm 的外部库中加载 jQuery?
- mysql - 如何添加在同一个表中选择的临时列?
- c# - 将 LINQ 连接查询转换为 DataTable