我已经查看了这两个版本之间的jaxb和java更改日志,并且空手而归。
在8u45这个代码工作正常,
package-info.java
@javax.xml.bind.annotation.XmlSchema(
namespace = "http://www.example.org",
elementFormDefault = XmlNsForm.QUALIFIED
) package com.rezometry.fw.net.soap;
import javax.xml.bind.annotation.XmlNsForm;
Foo.java
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;
@XmlAccessorType( XmlAccessType.FIELD)
@XmlRootElement(name = "foo")
public class Foo {
@XmlElement( name = "bar", required = true )
public String bar;
}
Test.java
import javax.xml.transform.stream.StreamSource;
import javax.xml.bind.JAXB;
import java.io.StringReader;
import static org.hamcrest.CoreMatchers.is;
import static org.hamcrest.CoreMatchers.nullValue;
import static org.junit.Assert.assertThat;
@Test public void testJaxB(){
Foo sample = JAXB.unmarshal( new StreamSource( new StringReader( "<foo><bar>bar1</bar></foo>" ) ), Foo.class );
assertThat( sample.bar, is("bar1") );
}
然而在8u111中,sample.bar为null。我已经阅读了有关xml文档中缺少命名空间的各种其他答案,但我想确保继续我不修补可能在以后更改的错误。
我在intellij中看到这种情况,设置的唯一区别是我正在使用的java版本。所有其他库都是相同的。