5

When upgrading from Tomcat 6 to Tomcat 7 - we kept a number of files we wanted on the classpath in the $CATALINA_HOME/lib directory on 6 - and it made sense to move these two $CATALINA_HOME/shared/lib on Tomcat 7.

What we've found is that the jar files went across ok - but anything that wasn't a jar file - eg an xml file etc was not picked up by the class loaded in the shared/lib directory. When we moved the non-jar files back to the $CATALINA_HOME/lib directory - they loaded into the classpath without an issue.

My question is - is this a bug in the classloader in Tomcat 7? Or is this intended behaviour? (Failing to load non-jar files onto the classpath from the $CATALINA_HOME/shared/lib in a manner inconsistent to that which loads files from $CATALINA_HOME/lib)

OS: Windows7

Tomcat version: 7.0.30

Java version: 1.7.0_11

hawkeye
  • 34,745
  • 30
  • 150
  • 304

1 Answers1

5

I don't use shared lib, but according to this doc: http://wiki.apache.org/tomcat/HowTo

Note that Tomcat 6.0.14 the $CATALINA_HOME/shared/lib directory does not exist.

You will need to add this and you will need to edit $CATALINA_HOME/conf/catalina.properties so that the shared.loader line looks like this shared.loader=$CATALINA_HOME/shared/lib

Darius X.
  • 2,886
  • 4
  • 24
  • 51
  • Thanks @Darius X. - that link paragraph has enough information that you could almost infer the same issue from the Tomcat Doco. My question is whether this is intended behaviour - or just a consequence of something else. – hawkeye Jun 27 '13 at 22:40
  • 1
    Actually, the comments in the `catalina.properties` mention that you must specify one path value for loading classes and another path for loading jars: `shared.loader="${catalina.base}/shared/lib","${catalina.base}/shared/lib/*.jar","${catalina.home}/shared/lib","${catalina.home}/shared/lib/*.jar"`. See [my Answer](https://stackoverflow.com/a/58159451/642706) for more discussion. – Basil Bourque Sep 29 '19 at 22:19