Check if jar file is loaded?

2019-05-07 07:50发布

问题:

I have a custom jar file in the tomcat lib/ folder. As per my knowledge, any jar file in this folder will be loaded on startup.

Is there anyway I can check if a particular jar file is loaded or not?

I'm running tomcat-6.0.35.A on unix rhel5.

回答1:

I think I have seen which jars are open on startup in one of Tomcat log files. If not I could think about two possible alternatives:

  • Add -verbose:class to JAVA_OPTS in Tomcat startup script. It should print classes as they're loaded by JVM (lots of output). Grep log file (or stdout) to find if classes from your jar are listed
  • Use Linux lsof command fo see files opened by Tomcat process


回答2:

Jars aren't really "loaded on startup". But Tomcat's system class loader is loading classes from those jars. You can check if some class from the jar is available either:

  • by trying to load that class from your code, e.g. getClass().getClassloader().loadClass(className)
  • by trying to load class as a resource, e.g. getClass().getResource("/" + className.replace('.', '/') + ".class")

In second case you should have name or your jar file in the url returned by getResource().