JAXB出现URI Not Absolute异常的解决方案

来源:互联网 发布:机房设备监控软件 编辑:程序博客网 时间:2024/05/22 15:44

JAXB出现URI Not Absolute异常的解决方案

    最近在使用JAXB将bean对象转为XML文件时报出了URI Not Absolute错误。奇怪的是,在Window平台上,JAXB可以正常的完成转换并写入文件,而在Linux平台上给出了异常。

    出现问题的以下接口:

这里的第二个参数xml,我们传入了待写入的文件路径字符串。在Windows上可以识别诸如:D:\\files\\target.xml的字符串为文件路径,而在Linux上面,则报出Jaxb uri is not absolute异常。

    由于这是URI路径不被识别为文件引起的,因此修改下调用的接口就可以了。Marshal拥有多个重载的方法,传入File对象即可避免错误。

测试代码如下:

import javax.xml.bind.JAXB;

import java.nio.file.Paths;

 

/**

* Created by Administrator on 2017/6/14.

*/

public class JAXBTest {

public static void main(String[] args) {

 

TestBean bean = new TestBean();

bean.setName("akira");

bean.setAge(18);

String path = Paths.get("G:/tmp/target.xml").toString();

JAXB.marshal(bean, path);

 

}

 

}

 

import javax.xml.bind.annotation.*;

/**
* Created by Administrator on 2017/6/14.
*/
@XmlAccessorType(XmlAccessType.FIELD)
@XmlRootElement(name = "root")
public class TestBean {

@XmlAttribute(name = "name")
private String name;

@XmlAttribute(name = "age")
private Integer age;

public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}

public Integer getAge() {
return age;
}

public void setAge(Integer age) {
this.age = age;
}
}

修改为:

import javax.xml.bind.JAXB;
import java.nio.file.Path;
import java.nio.file.Paths;

/**
* Created by Administrator on 2017/6/14.
*/
public class JAXBTest {
public static void main(String[] args) {

TestBean bean = new TestBean();
bean.setName("akira");
bean.setAge(18);
Path path = Paths.get("G:/tmp/target.xml");
JAXB.marshal(bean, path.toFile());

}

}

阅读全文
0 0
原创粉丝点击