I could be wrong, but I'm not sure this is an issue of missing symbolic links, but rather a minor misconfiguration of catalina.properties on Ubuntu 14.04. Specifically, the "server.loader" and "shared.loader" settings are referencing CATALINA_HOME instead of CATALINA_BASE.
So, for example, on Ubuntu 12.04, the default /var/lib/tomcat7/conf/catalina.properties sets these properties as the following:
Unfortunately, "${catalina.home}" translates to "/usr/share/tomcat7"... which is not the proper setting. As we know, these directories don't exist under "/usr/share/tomcat7" (CATALINA_HOME)
The correct setting should be replacing those with ${catalina.base}, as all the referenced directories do exist under "/var/lib/tomcat7" (CATALINA_BASE). So, the correct settings seem to be:
This same misconfiguration existing in both of these catalina.properties files:
* /var/lib/tomcat7/conf/catalina.properties
* /usr/share/tomcat7/skel/conf/catalina.properties (installed by the tomcat7-user package)
Obviously, creating the symbolic links from these directories in /var/lib/tomcat7/ to /usr/share/tomcat7/ would also be a possible solution. But, it's different than how things were setup in Ubuntu 12.04, when the configurations in catalina.properties were just using CATALINA_BASE directly.
I ran into this bug today on Ubuntu Server 14.04.
I could be wrong, but I'm not sure this is an issue of missing symbolic links, but rather a minor misconfiguration of catalina.properties on Ubuntu 14.04. Specifically, the "server.loader" and "shared.loader" settings are referencing CATALINA_HOME instead of CATALINA_BASE.
So, for example, on Ubuntu 12.04, the default /var/lib/ tomcat7/ conf/catalina. properties sets these properties as the following:
server. loader= /var/lib/ tomcat7/ server/ classes, /var/lib/ tomcat7/ server/ *.jar loader= /var/lib/ tomcat7/ shared/ classes, /var/lib/ tomcat7/ shared/ *.jar
shared.
However, on Ubuntu 14.04, the hardcoded "/var/lib/tomcat7/" paths have been replaced with "${catalina.home}", so it looks like this:
server. loader= ${catalina. home}/server/ classes, ${catalina. home}/server/ *.jar loader= ${catalina. home}/shared/ classes, ${catalina. home}/shared/ *.jar
shared.
Unfortunately, "${catalina.home}" translates to "/usr/share/ tomcat7" ... which is not the proper setting. As we know, these directories don't exist under "/usr/share/ tomcat7" (CATALINA_HOME)
The correct setting should be replacing those with ${catalina.base}, as all the referenced directories do exist under "/var/lib/tomcat7" (CATALINA_BASE). So, the correct settings seem to be:
server. loader= ${catalina. base}/server/ classes, ${catalina. base}/server/ *.jar loader= ${catalina. base}/shared/ classes, ${catalina. base}/shared/ *.jar
shared.
This same misconfiguration existing in both of these catalina.properties files: tomcat7/ conf/catalina. properties tomcat7/ skel/conf/ catalina. properties (installed by the tomcat7-user package)
* /var/lib/
* /usr/share/
Obviously, creating the symbolic links from these directories in /var/lib/tomcat7/ to /usr/share/tomcat7/ would also be a possible solution. But, it's different than how things were setup in Ubuntu 12.04, when the configurations in catalina.properties were just using CATALINA_BASE directly.