Upgrade OpenCms from 9.0.1 to 10.0.1#

  1. Download OpenCms 10.0.1 Upgrade Wizard
  2. Unzip opencms-upgrade-to-10.0.1.zip
  3. Read file "readme.txt"

Comments and my own instructions#

1. Create backup (!)

2. After wizard step "Module Selection" I get following message

HTTP Status 500
OpenCms is not properly initialized!
Please make sure that the OpenCms setup wizard has been run once and is disabled now.

A web search suggested to "delete the contents of the tomcat work folder and run the setup again. This kind of error can occur, if you had a previous opencms version installed in the same servlet container."
=> did NOT help

There is also no hint in .../WEB-INF/logs/update.log

Another suggestion was

- Restored a backup (Web application and the CMS db) and started the CMS servlet container.
- Deselected the "Use Upload Applet" option in the OpenCMS User Preferences (as mentioned in http://mail.opencms.org/pipermail/opencms-dev/2007q1/027888.html)
- Verified the User Management >> User properties to ensure that the entry "USERPREFERENCES_workplace-generaloptionsuploadapplet at java.lang.Boolean=false"
  is not present. (as mentioned in http://lists.opencms.org/pipermail/opencms-dev/2011q2/035708.html)
- The index generation has been disabled, the files opencms.properties and cmsupdate.ori were modified as mentioned in the readme file.
=> did NOT help

Then I tried to upgrade only to 9.5. This is basically the same procedure. => the module update started, but never finished, so did NOT work

Then I started to analyse the logs, check

  • tomcats's /logs/catalina.log
  • webapps/opencms/WEB-INF/logs/opencms.log
  • webapps/opencms/WEB-INF/logs/update.log

Here I found

java.lang.LinkageError: loader constraint violation: when resolving method "org.apache.commons.digester.Digester.setLogger(Lorg/apache/commons/logging/Log;)V" 
the class loader (instance of org/apache/tomee/catalina/TomEEWebappClassLoader) of the current class, org/opencms/configuration/CmsSetNextRule, 
and the class loader (instance of java/net/URLClassLoader) for the method's defining class, org/apache/commons/digester/Digester, 
have different Class objects for the type org/apache/commons/logging/Log used in the signature
SOLUTION:
In tomcat's lib folder I had commons-logging-1.1.1.jar, but in the opencms/WEB-INF/lib I had commons-logging-1.0.4.jar, commons-logging-1.1.jar, commons-logging-1.1.1.jar, commons-logging-1.1.3.jar !
Additionally I noticed that I have multiple versions of many jars here. I removed commons-logging-1.0.4.jar, commons-logging-1.1.jar, commons-logging-1.1.3.jar in opencms, so that it kept thesame as tomcat, which was commons-logging-1.1.1.jar.
=> THIS WORKED !!!

Nevertheless I deleted all minor versions of the same jar type in the opencms lib folder. It seems that the copy of the upgrade WEB-INF folder just add new versions. This should be mentioned in the readme.txt.