So what happens when I add something to the build path of a web-app ? The
dependency is not registered ? Also does that mean that whatever dependency
I need I will have to put it in the /lib folder ? I just don't understand
why it doesn't work if I add it to the Build Path from Eclipse like I do
for a normal Java Application.

On Thu, Feb 19, 2015 at 2:19 AM, Christopher Schultz <
ch...@christopherschultz.net> wrote:

> -----BEGIN PGP SIGNED MESSAGE-----
> Hash: SHA256
>
> Sreyan,
>
> (Sorry, I sent way before I was done writing. Full intentional message
> follows.)
>
> On 2/18/15 10:15 AM, sreya...@gmail.com wrote:
> > What is the SYSTEM PATH that you are referring to ? Is it the
> > JAVA_HOME or the PATH system variable ?
>
> Neither of those. It's commonly referred to as the CLASSPATH
> environment variable, which should pretty much never be set because
> it's horribly confusing.
>
> Instead, Tomcat uses "java -classpath [the classpath]" to launch the
> JVM. The classpath used there includes two JAR files:
>
> > bin/bootstrap.jar bin/tomcat-juli.jar
>
> So the only thing that javax.sql.DriverManager can scan is the boot
> classpath (that includes all the JVM internals) plus the system
> classpath (which includes just those two specific JARs above).
>
> > What is the CLASSPATH just before Tomcat properly starts up?
>
> The boot class path includes JVM stuff (rt.jar, etc.)
>
> The system class path includes anything the JVM environment was
> instructed to load when launched (either from the CLASSPATH
> environment variable, or from the "-classpath" argument on the
> command-line).
>
> Tomcat's bootstrap class creates a new ClassLoader which includes
> everything in lib/*.jar and then starts the Tomcat container using
> *that* as the effective "class path".
>
> > What is it after it starts up?
>
> Well, Tomcat can see everything in the boot and system class paths
> (ClassLoaders) plus everything in lib/*.jar.
>
> > Correct me if I am wrong that means that whatever dependencies I
> > have in my project is not added to the SYSTEM CLASSPATH but is
> > instead loaded by TOMCAT.
>
> Correct.
>
> > So if a module searches only the SYSTEM CLASSPATH it won’t be able
> > to find the dependencies. Am I right ?
>
> Correct. And DriverManager can't search *down* into ClassLoaders it
> doesn't know about -- including Tomcat's ClassLoader. So,
> DriverManager can't load your JDBC driver using its standard detection
> algorithm.
>
> So, you still need to call Class.forName to register the driver.
>
> - -chris
> -----BEGIN PGP SIGNATURE-----
> Version: GnuPG v1
> Comment: GPGTools - http://gpgtools.org
>
> iQIcBAEBCAAGBQJU5PrwAAoJEBzwKT+lPKRY0/kP/Raf7VLP18ZpzXlLqK+ehPW5
> 1tDiJAG/uiz9L+v3/cOgmqcabHI7m4BSGdd8eeW2G8CYNpjRYDRTjq8dGVPkkzO6
> 4ZR3CX2Hgawxw7Qg8hnDh+Fjq+o7yOclY9T0rQFzcP4UnS4cRnRDRHGZtADycP9Y
> Fdgnq5ey/NloTYaUioAmdnL1wnj9pzhRkpzztI8fxhQ1q2AdkLojMUSOArlfg1X5
> N/aSTA0ULhB8Socxiln6TSnjAMxoe2/1PCNwLcIzqLKJcN3zA2rt4eAf5F2JbC50
> zJtfVNa5CEZa3W0Gj5Arl3YWp0rrBa/fNdv7j8iPoF7WZOJbACkZEYuQeS5U3SyS
> kyPhKAkE0b5wICzT+H7VUkNCRi0Gb02ER+QFg/UnoYyX91HHJPKSXfPLmD1fraq0
> YkrhmrXp2O7rRa7YiIDp0yL8d7tNppT7sObyzKzZ1TI7Bf5DXEFsx82aXXWQ7wO4
> VOJh14CuaaBhmxWei3w+pUsoLxe359Fmj2cGbAjfCxGUqJhyZgltjMWCvagXM119
> wg645c9nD71hpX1VpHiPQmougHB8a/w1ripd5hVwdT0NRnlYYG1oDKgT83dEYnkk
> 7yVnuGSA/upinWjdV+GjWCgLr1Kx8O0B4isX0yqBYXtQXh8m4/jDbFGx0V1mGFXW
> aMQS15YHd+kU8oB65ioP
> =sv9k
> -----END PGP SIGNATURE-----
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscr...@tomcat.apache.org
> For additional commands, e-mail: users-h...@tomcat.apache.org
>
>

Reply via email to