Bringing up Platform 2.0 w/legacy UI

Hi,

We have been trying to bring up Platform 2.0 (2.0.x branch of openmrs-core) with legacy-ui (master branch of openmrs-module-legacyui) omod, but got stuck with the below error:

Exception in thread "Thread-19" java.lang.NoClassDefFoundError: org/openmrs/module/Activator at java.lang.ClassLoader.defineClass1(Native Method) at java.lang.ClassLoader.defineClass(ClassLoader.java:763) at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142) at java.net.URLClassLoader.defineClass(URLClassLoader.java:467) at java.net.URLClassLoader.access$100(URLClassLoader.java:73) at java.net.URLClassLoader$1.run(URLClassLoader.java:368) at java.net.URLClassLoader$1.run(URLClassLoader.java:362) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(URLClassLoader.java:361) at org.openmrs.module.ModuleClassLoader.loadClass(ModuleClassLoader.java:616) at org.openmrs.module.ModuleClassLoader.loadClass(ModuleClassLoader.java:535) at java.lang.ClassLoader.loadClass(ClassLoader.java:357) at org.openmrs.module.Module.getModuleActivator(Module.java:155) at org.openmrs.module.ModuleFactory.startModuleInternal(ModuleFactory.java:771) at org.openmrs.api.context.Daemon$1.run(Daemon.java:72) Caused by: java.lang.ClassNotFoundException: org.openmrs.module.Activator at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1320) at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1173) at org.openmrs.module.ModuleClassLoader.loadClass(ModuleClassLoader.java:542) at java.lang.ClassLoader.loadClass(ClassLoader.java:357) ... 15 more Exception in thread "Thread-9" java.lang.NoClassDefFoundError: org/openmrs/module/Activator at java.lang.ClassLoader.defineClass1(Native Method) at java.lang.ClassLoader.defineClass(ClassLoader.java:763) at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142) at java.net.URLClassLoader.defineClass(URLClassLoader.java:467) at java.net.URLClassLoader.access$100(URLClassLoader.java:73) at java.net.URLClassLoader$1.run(URLClassLoader.java:368) at java.net.URLClassLoader$1.run(URLClassLoader.java:362) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(URLClassLoader.java:361) at org.openmrs.module.ModuleClassLoader.loadClass(ModuleClassLoader.java:616) at org.openmrs.module.ModuleClassLoader.loadClass(ModuleClassLoader.java:535) at java.lang.ClassLoader.loadClass(ClassLoader.java:357) at org.openmrs.module.Module.getModuleActivator(Module.java:155) at org.openmrs.module.ModuleUtil.refreshApplicationContext(ModuleUtil.java:814) at org.openmrs.module.web.WebModuleUtil.refreshWAC(WebModuleUtil.java:948) at org.openmrs.web.Listener.performWebStartOfModules(Listener.java:638) at org.openmrs.web.Listener.performWebStartOfModules(Listener.java:617) at org.openmrs.web.Listener.startOpenmrs(Listener.java:255) at org.openmrs.web.WebDaemon$1.run(WebDaemon.java:42) Caused by: java.lang.ClassNotFoundException: org.openmrs.module.Activator at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1320) at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1173) at org.openmrs.module.ModuleClassLoader.loadClass(ModuleClassLoader.java:542) at java.lang.ClassLoader.loadClass(ClassLoader.java:357) ... 19 more

Also found this warning in the log:

WARN - Module.expandExtensionNames(543) |2016-04-29 12:24:38,813| Unable to find class definition for extension: org.openmrs.admin.list java.lang.NoClassDefFoundError: org/openmrs/module/web/extension/AdministrationSectionExt at java.lang.ClassLoader.defineClass1(Native Method) at java.lang.ClassLoader.defineClass(ClassLoader.java:763) at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142) at java.net.URLClassLoader.defineClass(URLClassLoader.java:467) at java.net.URLClassLoader.access$100(URLClassLoader.java:73) at java.net.URLClassLoader$1.run(URLClassLoader.java:368) at java.net.URLClassLoader$1.run(URLClassLoader.java:362) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(URLClassLoader.java:361) at org.openmrs.module.ModuleClassLoader.loadClass(ModuleClassLoader.java:616) at org.openmrs.module.ModuleClassLoader.loadClass(ModuleClassLoader.java:535) at java.lang.ClassLoader.loadClass(ClassLoader.java:357) at org.openmrs.module.Module.expandExtensionNames(Module.java:535) at org.openmrs.module.Module.getExtensions(Module.java:487) at org.openmrs.module.ModuleFactory.startModuleInternal(ModuleFactory.java:665) at org.openmrs.api.context.Daemon$1.run(Daemon.java:72) Caused by: java.lang.ClassNotFoundException: org.openmrs.module.web.extension.AdministrationSectionExt at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1320) at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1173) at org.openmrs.module.ModuleClassLoader.loadClass(ModuleClassLoader.java:542) at java.lang.ClassLoader.loadClass(ClassLoader.java:357) ... 16 more

Please help.

On further debugging, we found that exception comes from htmlwidgets-1.7.0.omod. Any idea?

Where do we get the list of compatible omods for openmrs war that we build out of 2.0.x branch? The above error, we got rid of it by upgrading htmlwidgets to 1.7.1 omod.

@preethi_s the module versions you see here are all running on platform 2.0 http://uat-platform.openmrs.org:8080/openmrs/admin/modules/module.list

Platform 2.0 has a lot of backwards incompatible changes, old versions of most modules won’t start on 2.0, so you need to run the latest build of htmlwidgets, I see that you tried to run 1.7 which is old and that’s why you’re getting those errors.

Compatibility with Platform 2.0 for modules distributed with the Reference Application is being tracked here:

Thanks @burke @dkayiwa. We are building omods from master brach of each module repo and got stuck with a new problem. Legacy ui login fails when we add serialization-xstream-0.2.12-snapshot.omod. When I remove the omod, we are able to login to openmrs. We found this in log on trying to login:

WARN - ModuleServlet.service(65) |2016-05-02 12:36:22,319| No servlet with name: loginServlet was found

These are the list of omods that we have in our box.

P.S: We are trying to bring up Bahmni with openmrs 2.0 and also found that bed-management and address-hierarchy dont work with openmrs 2.0.

Strange because i have just tried out only the two snapshot versions of the modules (legacyui and serialization) and i was able to login successfully. Could it be some sort of interference with another module?

@dkayiwa Yes reporting module seems to interfere it. On removing it worked fine, but not able to figure the issue. We found this in log:

Exception in thread "Thread-9" java.lang.NoClassDefFoundError: org/openmrs/reporting/AbstractReportObject at java.lang.Class.getDeclaredMethods0(Native Method) at java.lang.Class.privateGetDeclaredMethods(Class.java:2701) at java.lang.Class.getDeclaredMethods(Class.java:1975) at org.springframework.util.ReflectionUtils.getDeclaredMethods(ReflectionUtils.java:571) at org.springframework.util.ReflectionUtils.doWithMethods(ReflectionUtils.java:490) at org.springframework.util.ReflectionUtils.doWithMethods(ReflectionUtils.java:474) at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.determineCandidateConstructors(AutowiredAnnotationBeanPostProcessor.java:241) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.determineConstructorsFromBeanPostProcessors(AbstractAutowireCapableBeanFactory.java:1057) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1030) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:504) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:476) at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:303) at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230) at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:299) at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:194) at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:762) at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:757) at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:480) at org.openmrs.module.ModuleUtil.refreshApplicationContext(ModuleUtil.java:842) at org.openmrs.module.web.WebModuleUtil.refreshWAC(WebModuleUtil.java:866) at org.openmrs.web.Listener.performWebStartOfModules(Listener.java:643) at org.openmrs.web.Listener.performWebStartOfModules(Listener.java:622) at org.openmrs.web.Listener.startOpenmrs(Listener.java:260) at org.openmrs.web.WebDaemon$1.run(WebDaemon.java:42) Caused by: java.lang.ClassNotFoundException: org.openmrs.reporting.AbstractReportObject at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1320) at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1173) at org.openmrs.module.ModuleClassLoader.loadClass(ModuleClassLoader.java:563) at java.lang.ClassLoader.loadClass(ClassLoader.java:357) ... 24 more

A number of classes were moved from the platform to the reporting compatibility module. Can you retry with the reportingcompatibility module installed?

We tried with reportingcompatibility module and it worked. But we find many bean creation issues with addresshierarchy and bedmanagement omods. Do we need to change anything in those omods?

@preethi_s i have just made a commit to make the addresshierarchy module run on platform 2.0 So try the current snapshot version.

@dkayiwa Thanks a lot. I have also found another issue related UserResource in webservices.rest 2.15-SNAPSHOT to work with Platform 2.0. Am not sure whether 2.14 is compatible with Platform 2.0. Should I raise an issue in issues.openmrs.org? If so, against which version should I raise it?

The issue is UserResource1_8 is used in Platform 2.0 and it uses method UserService.saveUser(name, password which got changed in Platform 2.0. Link to the code:

Am not sure how this should be changed. Should changePassword method be used?

EncounterSearchHandler1_8 also doesn’t work with Platform 2.0. EncounterService.getEncounters parameters have been changed and is now recommended to use EncounterSearchCriteria.

Nice catch @preethi_s :slight_smile: Committed at:

And:

@dkayiwa awesome. Thanks :slight_smile:

The link to view the module versions for platform 2.0 is not working.

Thanks @jcantu1988 for reporting this. I have made a couple of commits to fix it. Feel free to try it again!

Hello, Im ruining to the same issue but with jasperreport 1.5.7. Im ruining Openmrs Platform 2.0 with reference application 2.5 on top of java 1.8. Currently, trying to install Cashier Module, and jasperreport is needed as a prerequisite. My problem so far is with jasperreport, the error i get is below.

Any Idea ?? Thanks,

Error Below

-GUI

“Error while trying to start module Unable to load/find moduleActivator: ‘org.openmrs.module.jasperreport.JasperReportActivator’ Module: Jasper Reports Module”

-Command Prompt

INFO - LoggingAdvice.invoke(115) |2016-12-12 17:52:59,659| In method AdministrationService.saveGlobalProperty. Arguments: GlobalProperty=property: jasperreport.started value: false, INFO - LoggingAdvice.invoke(155) |2016-12-12 17:52:59,822| Exiting method saveGlobalProperty WARN - Module.expandExtensionNames(546) |2016-12-12 17:52:59,822| jasperreport: Unable to find class definition for extension: org.openmrs.admin.list java.lang.NoClassDefFoundError: org/openmrs/module/web/extension/AdministrationSectionExt at java.lang.ClassLoader.defineClass1(Native Method) at java.lang.ClassLoader.defineClass(Unknown Source) at java.security.SecureClassLoader.defineClass(Unknown Source) at java.net.URLClassLoader.defineClass(Unknown Source) at java.net.URLClassLoader.access$100(Unknown Source) at java.net.URLClassLoader$1.run(Unknown Source) at java.net.URLClassLoader$1.run(Unknown Source) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(Unknown Source) at org.openmrs.module.ModuleClassLoader.loadClass(ModuleClassLoader.java:637) at org.openmrs.module.ModuleClassLoader.loadClass(ModuleClassLoader.java:556) at java.lang.ClassLoader.loadClass(Unknown Source) at org.openmrs.module.Module.expandExtensionNames(Module.java:538) at org.openmrs.module.Module.getExtensions(Module.java:490) at org.openmrs.module.ModuleFactory.stopModule(ModuleFactory.java:1167) at org.openmrs.module.ModuleFactory.startModuleInternal(ModuleFactory.java:800) at org.openmrs.api.context.Daemon$1.run(Daemon.java:74) Caused by: java.lang.ClassNotFoundException: org.openmrs.module.web.extension.AdministrationSectionExt at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1285) at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1119) at org.openmrs.module.ModuleClassLoader.loadClass(ModuleClassLoader.java:563) at java.lang.ClassLoader.loadClass(Unknown Source) … 17 more WARN - ModuleFactory.stopModule(1202) |2016-12-12 17:52:59,822| Unable to call module’s Activator.shutdown() method org.openmrs.module.ModuleException: Unable to load/find moduleActivator: ‘org.openmrs.module.jasperreport.JasperReportActivator’ Module: Jasper Reports Module at org.openmrs.module.Module.getModuleActivator(Module.java:174) at org.openmrs.module.ModuleFactory.stopModule(ModuleFactory.java:1197) at org.openmrs.module.ModuleFactory.startModuleInternal(ModuleFactory.java:800) at org.openmrs.api.context.Daemon$1.run(Daemon.java:74) Caused by: java.lang.NoClassDefFoundError: org/openmrs/module/Activator at java.lang.ClassLoader.defineClass1(Native Method) at java.lang.ClassLoader.defineClass(Unknown Source) at java.security.SecureClassLoader.defineClass(Unknown Source) at java.net.URLClassLoader.defineClass(Unknown Source) at java.net.URLClassLoader.access$100(Unknown Source) at java.net.URLClassLoader$1.run(Unknown Source) at java.net.URLClassLoader$1.run(Unknown Source) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(Unknown Source) at org.openmrs.module.ModuleClassLoader.loadClass(ModuleClassLoader.java:637) at org.openmrs.module.ModuleClassLoader.loadClass(ModuleClassLoader.java:556) at java.lang.ClassLoader.loadClass(Unknown Source) at org.openmrs.module.Module.getModuleActivator(Module.java:155) … 3 more Caused by: java.lang.ClassNotFoundException: org.openmrs.module.Activator at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1285) at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1119) at org.openmrs.module.ModuleClassLoader.loadClass(ModuleClassLoader.java:563) at java.lang.ClassLoader.loadClass(Unknown Source) … 16 more WARN - Module.expandExtensionNames(546) |2016-12-12 17:52:59,822| jasperreport: Unable to find class definition for extension: org.openmrs.admin.list java.lang.NoClassDefFoundError: org/openmrs/module/web/extension/AdministrationSectionExt at java.lang.ClassLoader.defineClass1(Native Method) at java.lang.ClassLoader.defineClass(Unknown Source) at java.security.SecureClassLoader.defineClass(Unknown Source) at java.net.URLClassLoader.defineClass(Unknown Source) at java.net.URLClassLoader.access$100(Unknown Source) at java.net.URLClassLoader$1.run(Unknown Source) at java.net.URLClassLoader$1.run(Unknown Source) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(Unknown Source) at org.openmrs.module.ModuleClassLoader.loadClass(ModuleClassLoader.java:637) at org.openmrs.module.ModuleClassLoader.loadClass(ModuleClassLoader.java:556) at java.lang.ClassLoader.loadClass(Unknown Source) at org.openmrs.module.Module.expandExtensionNames(Module.java:538) at org.openmrs.module.Module.getExtensions(Module.java:490) at org.openmrs.module.ModuleFactory.stopModule(ModuleFactory.java:1215) at org.openmrs.module.ModuleFactory.startModuleInternal(ModuleFactory.java:800) at org.openmrs.api.context.Daemon$1.run(Daemon.java:74) Caused by: java.lang.ClassNotFoundException: org.openmrs.module.web.extension.AdministrationSectionExt at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1285) at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1119) at org.openmrs.module.ModuleClassLoader.loadClass(ModuleClassLoader.java:563) at java.lang.ClassLoader.loadClass(Unknown Source) … 17 more WARN - OpenmrsUtil.deleteDirectory(941) |2016-12-12 17:52:59,822| …could not remove directory: C:\Users\Mahmoud\Application Data\OpenMRS\openmrs-standalone.openmrs-lib-cache\jasperreport\lib WARN - OpenmrsUtil.deleteDirectory(941) |2016-12-12 17:52:59,860| …could not remove directory: C:\Users\Mahmoud\Application Data\OpenMRS\openmrs-standalone.openmrs-lib-cache\jasperreport

In your config.xml, add an aware of for the legacyui module as you can see here: https://github.com/openmrs/openmrs-module-xforms/blob/master/omod/src/main/resources/config.xml#L28

Also change your JasperReportActivator to implement ModuleActivator or extend BaseModuleActivator