gpt4 book ai didi

java - 在代码中使用绑定(bind)类 - JIBX

转载 作者:行者123 更新时间:2023-11-29 06:00:07 29 4
gpt4 key购买 nike

我成功地绑定(bind)了通过 XSD 生成的文件,并且在我的目录中得到了以下文件

C:\jibx\tutorial\example25>dir
Volume in drive C is WINDOWS
Volume Serial Number is 1C8F-663E

Directory of C:\jibx\tutorial\example25

05/06/2012 07:12 PM <DIR> .
05/06/2012 07:12 PM <DIR> ..
05/06/2012 07:12 PM 3,313 Address.class
05/06/2012 07:08 PM 3,447 Address.java
05/06/2012 07:10 PM 2,912 binding.xml
05/06/2012 07:12 PM 2,516 Customer.class
05/06/2012 07:08 PM 1,763 Customer.java
05/06/2012 07:12 PM 2,582 Item.class
05/06/2012 07:08 PM 1,878 Item.java
05/06/2012 07:12 PM 2,529 JiBX_bindingFactory.class
05/06/2012 07:12 PM 2,384 JiBX_bindingMungeAdapter.class
05/06/2012 07:12 PM 2,490 JiBX_bindingOrder_access.class
05/06/2012 07:12 PM 7,539 Order.class
05/06/2012 07:09 PM 4,869 Order.java
05/06/2012 07:11 PM 1,034 Shipping.class
05/06/2012 07:09 PM 879 Shipping.java
05/06/2012 12:22 AM 5,137 starter.xsd
15 File(s) 45,272 bytes
2 Dir(s) 160,023,375,872 bytes free

现在我将这些文件复制到 eclipse 中新创建的 JAVA 项目中,在该项目中创建了一个名为 example25 的包并将这些文件粘贴到那里然后我使用以下代码并在 Debug模式下运行它

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.util.Iterator;

import org.jibx.runtime.BindingDirectory;
import org.jibx.runtime.IBindingFactory;
import org.jibx.runtime.IMarshallingContext;
import org.jibx.runtime.IUnmarshallingContext;
import org.jibx.runtime.JiBXException;
import example25.*;


public class Test
{

public static void main(String[] args)
{

try
{

// unmarshal customer information from file
IBindingFactory bfact = BindingDirectory.getFactory(Order.class);
IUnmarshallingContext uctx = bfact.createUnmarshallingContext();
FileInputStream in = new FileInputStream("D:\\Java Libraries\\jibx\\dwcode2\\starter.xml");
Order order = (Order)uctx.unmarshalDocument(in, null);

// compute the total amount of the order
float total = 0.0f;
for (Iterator<Item> iter = order.getItemList().iterator(); iter.hasNext();)
{
Item item = iter.next();
total += item.getPrice() * item.getQuantity();
}
order.setTotal(new Float(total));

// marshal object back out to file (with nice indentation, as UTF-8)
IMarshallingContext mctx = bfact.createMarshallingContext();
mctx.setIndent(2);
FileOutputStream out = new FileOutputStream("c:\\out.xml");
mctx.setOutput(out, null);
mctx.marshalDocument(order);
System.out.println("Processed order with " + order.getItemList().size() + " items and total value " + total);

}
catch (FileNotFoundException e)
{
e.printStackTrace();
System.exit(1);
} catch (JiBXException e)
{
e.printStackTrace();
System.exit(1);
}
}

}//end main

执行第一条语句后出现如下错误

Unable to access binding information for class example25.Order
Make sure the binding has been compiled
java.lang.NoSuchFieldException: JiBX_bindingList
at java.lang.Class.getDeclaredField(Unknown Source)
at org.jibx.runtime.BindingDirectory.getBindingList(BindingDirectory.java:68)
at org.jibx.runtime.BindingDirectory.getFactory(BindingDirectory.java:211)
at Test.main(Test.java:24)

最佳答案

拉杰什,

您在该目录中显示的文件意味着您所做的一切都是正确的!

你犯的错误是使用eclipse,因为eclipse会自动重新编译源代码文件(没有你在绑定(bind)步骤中添加的绑定(bind)信息)

尝试使用您在第一步中生成的类文件运行 Test.class 文件。

你的 java 命令应该是这样的:

java -cp C:\directorywithtestclass;C:\jibx\tutorial Test

关于java - 在代码中使用绑定(bind)类 - JIBX,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10476020/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com