# JAXB: com.sun.xml.bind.v2.ContextFactory



## TiME-SPLiNTER (1. Okt 2010)

Hallo 

Ich habe mal wieder ein Problem. Und zwar setze ich JAXB zum lesen und schreiben von XML-Files ein. Ich habe mich in einer nativen Java-Application eingearbeitet und dabei folgendes Beispiel-Code erstellt:


```
try {
			// A JAXBContext instance is created for handling classes generated in primer.po.
			JAXBContext jc = JAXBContext.newInstance(Messages.class);
			
			// An Unmarshaller instance is created.
			Unmarshaller u = jc.createUnmarshaller();
			
			// The default JAXB Unmarshaller ValidationEventHandler is enabled to send to validation warnings and errors to system.out. The default configuration causes the unmarshal operation to fail upon encountering the first validation error.
			StreamSource streams[] = new StreamSource[1];
            streams[0] = new StreamSource(new File("resources/messages.xsd"));
            Schema s = SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI).newSchema(streams);

            u.setSchema(s);
			
			Messages msgs = (Messages)u.unmarshal(new FileInputStream("resources/messages.xml"));
			
			for(Message msg : msgs.getMessage()) {
				System.out.println("From: " + msg.getPeriod().getDateFrom());
				System.out.println("To: " + msg.getPeriod().getDateTo());
				System.out.println("---");
				System.out.println("DE: " + msg.getTexte().getDe());
				System.out.println("FR: " + msg.getTexte().getFr());
			}
			
		} catch( UnmarshalException ue ) {
			System.out.println( "Caught UnmarshalException" );
		} catch( JAXBException je ) {
			je.printStackTrace();
		} catch( IOException ioe ) {
			ioe.printStackTrace(); 
		} catch (SAXException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
```

Das klappt wunderbar und ohne Probleme . Dann wollte ich das ganze in meine Web-Application einbauen (Seem, JBoss 4.2, jaxb-Libraries auf dem Server vorhanden).

Wenn ich dann meine Applikation laufen lasse kommt folgendes:


```
09:32:32,574 ERROR [STDERR] Caused by: java.lang.ClassNotFoundException: com.sun.xml.bind.v2.ContextFactory
```

Ich habe gelesen, dass man die "jaxb-impl.jar" einbinden muss. Nur, wie und wo?

Wäre super wenn mir jemand weiterhelfen könnte ...


----------



## mvitz (2. Okt 2010)

WEB-INF/lib

dort gehören alle JARs hinein, die du mit ausliefern möchtest.

Ich hoffe übrigens, der obige Code stammt nicht aus einem Servlet, denn dort sollte man nicht mit "new File" arbeiten, sondern über den Classloader und getResourceAsStream.


----------



## TiME-SPLiNTER (8. Okt 2010)

Aber in den WEB-INF ordner kommen doch keine *.jar-Dateien oder? Oder was soll ich genau in den WEB-INF ordner schmeissen? Ich habe es mit der jaxb-impl.jar versucht. Das hat leider nichts geholfen .


----------



## mvitz (8. Okt 2010)

WEB-INF/lib und nicht WEB-INF

Weiß ja nicht, wer dir gesagt hat, dass da keine JARs hinein gehören, aber JARs die man in einer WebAnwendung mit ausliefert gehören genau da hin...

Für JAXB2 müssten da folgende JARs hinein: jaxb-api.jar, jaxb-impl.jar, jsr173_1.0_api.jar, activation.jar


----------

