# MongoDB: Morphia REST 505 Exception Tomcat



## TheSlowlySnail (27. Nov 2015)

Hallo,
ich arbeite mich gerade in REST ein und habe jetzt einen kleinen REST Service geschrieben, der erfolgreich mit einer Mongo DB kommuniziert. Jetzt möchte ich Morphia einsetzen und habe mir Morphie per maven gezogen. Jedoch bekomme ich folgenden Fehler wenn ich eine Morphia Instanz einfüge. Hier der code mit auskommentierter MongoInstanz: https://github.com/TheSlowlySnail/M.../src/de/meinTellerchen/rest/HelloService.java

Ich erhalte im Tomcat folgenden Fehler:
*HTTP Status 500 - java.lang.IncompatibleClassChangeError: class net.sf.cglib.core.DebuggingClassWriter has interface org.objectweb.asm.ClassVisitor as super class*

```
type Exception report

message java.lang.IncompatibleClassChangeError: class net.sf.cglib.core.DebuggingClassWriter has interface org.objectweb.asm.ClassVisitor as super class

description The server encountered an internal error that prevented it from fulfilling this request.

exception

javax.servlet.ServletException: java.lang.IncompatibleClassChangeError: class net.sf.cglib.core.DebuggingClassWriter has interface org.objectweb.asm.ClassVisitor as super class
com.sun.jersey.spi.container.servlet.WebComponent.service(WebComponent.java:420)
com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:537)
com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:699)
javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)

root cause

java.lang.IncompatibleClassChangeError: class net.sf.cglib.core.DebuggingClassWriter has interface org.objectweb.asm.ClassVisitor as super class
java.lang.ClassLoader.defineClass1(Native Method)
java.lang.ClassLoader.defineClass(ClassLoader.java:760)
java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
org.apache.catalina.loader.WebappClassLoaderBase.findClassInternal(WebappClassLoaderBase.java:2496)
org.apache.catalina.loader.WebappClassLoaderBase.findClass(WebappClassLoaderBase.java:860)
org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1302)
org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1167)
net.sf.cglib.core.DefaultGeneratorStrategy.getClassVisitor(DefaultGeneratorStrategy.java:30)
net.sf.cglib.core.DefaultGeneratorStrategy.generate(DefaultGeneratorStrategy.java:24)
net.sf.cglib.core.AbstractClassGenerator.create(AbstractClassGenerator.java:231)
net.sf.cglib.core.KeyFactory$Generator.create(KeyFactory.java:149)
net.sf.cglib.core.KeyFactory.create(KeyFactory.java:117)
net.sf.cglib.core.KeyFactory.create(KeyFactory.java:109)
net.sf.cglib.core.KeyFactory.create(KeyFactory.java:105)
net.sf.cglib.proxy.Enhancer.<clinit>(Enhancer.java:71)
java.lang.Class.forName0(Native Method)
java.lang.Class.forName(Class.java:264)
org.mongodb.morphia.mapping.lazy.LazyFeatureDependencies.testDependencyFullFilled(LazyFeatureDependencies.java:32)
org.mongodb.morphia.mapping.lazy.LazyFeatureDependencies.createDefaultProxyFactory(LazyFeatureDependencies.java:41)
org.mongodb.morphia.mapping.Mapper.<init>(Mapper.java:109)
org.mongodb.morphia.Morphia.<init>(Morphia.java:45)
de.meinTellerchen.rest.HelloService.getDBCon(HelloService.java:35)
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
java.lang.reflect.Method.invoke(Method.java:497)
com.sun.jersey.spi.container.JavaMethodInvokerFactory$1.invoke(JavaMethodInvokerFactory.java:60)
com.sun.jersey.server.impl.model.method.dispatch.AbstractResourceMethodDispatchProvider$ResponseOutInvoker._dispatch(AbstractResourceMethodDispatchProvider.java:205)
com.sun.jersey.server.impl.model.method.dispatch.ResourceJavaMethodDispatcher.dispatch(ResourceJavaMethodDispatcher.java:75)
com.sun.jersey.server.impl.uri.rules.HttpMethodRule.accept(HttpMethodRule.java:288)
com.sun.jersey.server.impl.uri.rules.ResourceClassRule.accept(ResourceClassRule.java:108)
com.sun.jersey.server.impl.uri.rules.RightHandPathRule.accept(RightHandPathRule.java:147)
com.sun.jersey.server.impl.uri.rules.RootResourceClassesRule.accept(RootResourceClassesRule.java:84)
com.sun.jersey.server.impl.application.WebApplicationImpl._handleRequest(WebApplicationImpl.java:1469)
com.sun.jersey.server.impl.application.WebApplicationImpl._handleRequest(WebApplicationImpl.java:1400)
com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:1349)
com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:1339)
com.sun.jersey.spi.container.servlet.WebComponent.service(WebComponent.java:416)
com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:537)
com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:699)
javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
```

Dependencies: https://github.com/TheSlowlySnail/MongoMorphiaTutorial/blob/master/pom.xml

Für hilfe, warum diese Servlet Exception erscheint wäre ich sehr sehr dankbar 

Viele Grüße


----------



## Joose (27. Nov 2015)

Ich nehme an du verwendest 2 externe Bibliotheken deren Versionen einfach nicht zueinander passen 
stackoverflow.com/questions/26173802/how-can-i-resolve-java-lang-incompatibleclasschangeerrora

BTW: Ich habe einfach die Fehlermeldung (class net.sf.cglib.core.DebuggingClassWriter has interface org.objectweb.asm.ClassVisitor as super class) genommen und per Google gesucht: https://www.google.at/search?q=clas...-8&oe=utf-8&gws_rd=cr&ei=Py9YVsOOHsq7acWktbAL
Sowas ist immer ganz gut, entweder man findet welche mit einem ähnlichen bzw. gleichen Fehler oder gar nichts (dann kann man immer noch fragen).


----------



## TheSlowlySnail (27. Nov 2015)

Das hab ich tatsächlich auch gemacht, aber ich war so doof und habe geglaubt das cglib 3.2 sei kein problem. aber ich musste wirklich auf 2.2.2 . Zuvor hab ich noch mit der Reihenfolge und asm rumgespielt. Dafür schäm ich mich jetzt ein wenig. Aber vielen vielen Dank  ich hoffe jetzt gehts voran


----------

