# Classpath für JPA in Tomcat Webapp: Wie konfigurieren?



## mdolphin (25. Okt 2011)

Ich schreibe eine kleine Anwendung, welche später Objekte, die ich mittels JSON Webservice erhalte, in eine Datenbank speichern soll. Ich habe also zunächst die ganzen zu persistierenden Klassen erzeugt und einige JUnit Tests geschrieben, um solche Objekte mittel JPA (Eclipselink 2.3.0) in die Datenbank zu schreiben, zu lesen und zu löschen. Das klappt alles ganz hervorragend.

Außerdem habe ich mir im selben Eclipse Projekt einige JAX-RS Webservices mit Jersey erstellt, welche JSON Objekte empfangen und in einer Datenstruktur speichern können.

Sobald ich aber versuche direkt in meinen Webressourcen (also den Klassen welche auf REST Anfragen antworten) JPA zu verwenden, wirft mir der Tomcat direkt beim Start schon eine Exeption:

SCHWERWIEGEND: StandardWrapper.Throwable
java.lang.NoClassDefFoundError: Ljavax/persistence/EntityManagerFactory;

Scheinbar hat meine Web-Applikation, im Gegensatz zu den JUnit Tests und Datenklassen, gar keinen Zugriff auf die JPA Klassen. 

In Eclipse ist unter "Java Build Path" meine User Library "EclipseLink 2.3.0 - Indigo" zu sehen. Im Abschnitt "Web App Libraries" jedoch nicht. 







Wieso funktioniert JPA "lokal", also in den JUnit Tests, nicht aber in der Webapp?

Danke im Voraus

Michael


----------



## maki (25. Okt 2011)

Alles was eine WebApp zur Laufzeit braucht muss entweder uner WEB-INF/lib liegen oder vom Servetcotainer zur Verfügung gestellt werden.

Zur Laufzeit gibt es dein Eclipseprojekt und die userlibraires nicht mehr 

Kannst entweder beim Order/Export einstellen was beim packen der War mit rein kommt, oder gleich unter WEB-INF/lib legen.

Unittests werden nicht im ServletContainer ausgeführt, das wären Integrationstests.


----------



## TheDarkRose (25. Okt 2011)

maki hat gesagt.:


> Kannst entweder beim Order/Export einstellen was beim packen der War mit rein kommt, oder gleich unter WEB-INF/lib legen.
> s.



Mittlerweile durch den Punkt Deployment Assembly abgelöst.


----------



## maki (25. Okt 2011)

^^ Schon möglich, die letzten WebApps (legacy) vor 2-3 Jahren wurden von Maven2 gebaut


----------



## mdolphin (27. Okt 2011)

Thanks! Das hat geholfen. 

Gruß
Michael


----------

