Tôi đang cố gắng để JAXB làm việc với một lớp học groovy của tôi, tuy nhiên, nó xuất hiện nó không hoạt động nhưng phiên bản java nào. Đây là mã ...Làm thế nào để tôi có được Groovy và JAXB để chơi đẹp cùng nhau
Đây là các trường hợp:
Nếu 2 và 3 không được chú ý thì nó hoạt động tốt.
Nếu 1 và 4 được uncomment tôi nhận được:
com.sun.xml.internal.bind.v2.runtime.IllegalAnnotationsException:
2 counts of IllegalAnnotationExceptions
groovy.lang.MetaClass is an interface, and JAXB can't handle interfaces.
Nếu 1 và 5 là không chú thích tôi nhận được:
javax.xml.bind.JAXBException: class org.oclc.presentations.simplejaxb.PlayerGroovy
nor any of its super class is known to this context.
Bất kỳ ý tưởng?
Java:
import javax.xml.bind.annotation.XmlRootElement;
@XmlRootElement
public class Player {
}
Groovy:
import javax.xml.bind.annotation.XmlRootElement
@XmlRootElement
public class PlayerGroovy {
}
Test:
import org.junit.Test
import javax.xml.bind.JAXBContext
import javax.xml.bind.Marshaller
import org.junit.Assert
class PlayerTest {
@Test
public void testJaXB(){
//1 PlayerGroovy player = new PlayerGroovy()
//2 Player player = new Player()
StringWriter writer = new StringWriter();
//3 JAXBContext context = JAXBContext.newInstance(Player.class);
//4 JAXBContext context = JAXBContext.newInstance(PlayerGroovy.class);
//5 JAXBContext context = JAXBContext.newInstance(PlayerGroovy.getClass());
Marshaller m = context.createMarshaller();
m.marshal(player, writer);
println(writer)
Assert.assertTrue(true)
}
}
+1 câu trả lời tuyệt vời – skaffman