NoClassDefFoundError when building new REST module

Hi all,

Well I’m facing problems extending webservices.rest-omod. can you help me with this issue? What I did was, create a new openmrs-module named patientflag_rest and put webservices.rest-omod and webservices.rest-omod-common as dependencies (in the provided scope).

I’m able to build and package the new module.

The problem is when i put the omod in the modules folder and start tomcat, I simple get this error:

Exception in thread "Thread-8" java.lang.NoClassDefFoundError: org/openmrs/module/webservices/rest/web/resource/impl/BaseDelegatingReadableResource
    at java.lang.ClassLoader.defineClass1(Native Method)
    at java.lang.ClassLoader.defineClass(ClassLoader.java:800)
    at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
    at java.net.URLClassLoader.defineClass(URLClassLoader.java:449)
    at java.net.URLClassLoader.access$100(URLClassLoader.java:71)
    at java.net.URLClassLoader$1.run(URLClassLoader.java:361)
    at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
    at org.openmrs.module.ModuleClassLoader.loadClass(ModuleClassLoader.java:617)
    at org.openmrs.module.ModuleClassLoader.loadClass(ModuleClassLoader.java:537)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
    at org.openmrs.util.OpenmrsClassLoader.loadClass(OpenmrsClassLoader.java:156)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
    at org.openmrs.module.webservices.rest.web.OpenmrsClassScanner.getClasses(OpenmrsClassScanner.java:98)
    at org.openmrs.module.webservices.rest.web.api.impl.RestServiceImpl.initializeResources(RestServiceImpl.java:198)
    at org.openmrs.module.webservices.rest.web.api.impl.RestServiceImpl.initialize(RestServiceImpl.java:599)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:606)
    at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:317)
    at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:183)
    at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:150)
    at org.openmrs.aop.LoggingAdvice.invoke(LoggingAdvice.java:121)
    at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
    at org.springframework.aop.framework.adapter.MethodBeforeAdviceInterceptor.invoke(MethodBeforeAdviceInterceptor.java:51)
    at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
    at org.springframework.aop.framework.adapter.MethodBeforeAdviceInterceptor.invoke(MethodBeforeAdviceInterceptor.java:51)
    at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
    at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:204)
    at com.sun.proxy.$Proxy129.initialize(Unknown Source)
    at org.openmrs.module.webservices.rest.Activator.contextRefreshed(Activator.java:46)
    at org.openmrs.module.ModuleUtil.refreshApplicationContext(ModuleUtil.java:867)
    at org.openmrs.module.web.WebModuleUtil.refreshWAC(WebModuleUtil.java:962)
    at org.openmrs.web.Listener.performWebStartOfModules(Listener.java:630)
    at org.openmrs.web.Listener.performWebStartOfModules(Listener.java:609)
    at org.openmrs.web.Listener.startOpenmrs(Listener.java:252)
    at org.openmrs.web.WebDaemon$1.run(WebDaemon.java:42)
Caused by: java.lang.ClassNotFoundException: org.openmrs.module.webservices.rest.web.resource.impl.BaseDelegatingReadableResource
    at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1854)
    at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1703)
    at org.openmrs.module.ModuleClassLoader.loadClass(ModuleClassLoader.java:544)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
    ... 39 more

Regards

1 Like

Does your module’s config.xml have something like this?

3 Likes

No No.

I added it now. and it is working. thank you

1 Like