Un classpath es una lista de ubicaciones desde las que cargar clases.
Estas 'ubicaciones' pueden ser directorios o archivos jar.
Para los directorios, la JVM seguirá un patrón esperado para cargar una clase. Si tengo el directorio C: / myproject / classes en mi classpath, e intento cargar una clase com.mycompany.Foo , buscará en el directorio de clases un directorio llamado com , luego debajo de ese directorio llamado mycompany , y finalmente buscará un archivo llamado Foo.class en ese directorio.
En la segunda instancia, para archivos jar, buscará el archivo jar para esa clase. Un archivo jar es en realidad solo una colección comprimida de directorios como el anterior. Si descomprime un archivo jar, obtendrá un montón de directorios y archivos de clases siguiendo el patrón anterior.
Entonces, la JVM atraviesa una ruta de clase de principio a fin buscando la definición de la clase cuando intenta cargar la definición de la clase. Por ejemplo, en la ruta de clases:
C: / myproject / classes; C: /myproject/lib/stuff.jar; C: /myproject/lib/otherstuff.jar
La JVM intentará buscar primero en las clases del directorio , luego en stuff.jar y finalmente en otherstuff.jar .
Cuando obtiene una ClassNotFoundException, significa que la JVM ha atravesado toda la ruta de clases y no ha encontrado la clase a la que ha intentado hacer referencia. La solución, como ocurre tan a menudo en el mundo Java, es comprobar su classpath.
Defina una ruta de clase en la línea de comando diciendo java -cp y luego su ruta de clase . En un IDE como Eclipse, tendrá una opción de menú para especificar su ruta de clases.