Estoy intentando ejecutar una aplicación Java, pero obtengo este error:
java.lang.ClassNotFoundException:
Después de los dos puntos aparece la ubicación de la clase que falta. Sin embargo, sé que esa ubicación no existe ya que la clase se encuentra en otro lugar. ¿Cómo puedo actualizar la ruta de esa clase? ¿Tiene algo que ver con la ruta de clases?
java
class
classpath
classnotfoundexception
usuario2426316
fuente
fuente
Respuestas:
Su classpath está rota (que es un problema muy común en el mundo de Java).
Dependiendo de cómo inicie su aplicación, debe revisar el argumento de
-cp
su entrada Class-Path en MANIFEST.MF o el diseño de su disco.fuente
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.
fuente
Esta es la mejor solución que encontré hasta ahora.
Supongamos que tenemos un paquete llamado que
org.mypackage
contiene las clases:y los archivos que definen este paquete se almacenan físicamente en el directorio
D:\myprogram
(en Windows) o/home/user/myprogram
(en Linux).La estructura del archivo se verá así:
Cuando invocamos Java, se especifica el nombre de la aplicación se ejecute:
org.mypackage.HelloWorld
. Sin embargo, también debemos decirle a Java dónde buscar los archivos y directorios que definen nuestro paquete. Entonces, para lanzar el programa, tenemos que usar el siguiente comando:fuente
Si conoce la ruta de la clase o el jar que contiene la clase, agréguelo a su ruta de clases mientras la ejecuta. Puede usar el classpath como se menciona aquí:
en Windows
en UNIX / Linux
fuente
Pruebe estos si usa maven. Utilizo maven para mi proyecto y cuando lo hago
mvn clean install
e intento ejecutar un programa, lanza la excepción. Entonces, limpio el proyecto y lo ejecuto nuevamente y funciona para mí.Yo uso eclipse IDE.
Para la excepción de clase no encontrada al ejecutar la prueba Junit, intente ejecutar
mvn clean test
una vez. Compilará todas las clases de prueba.fuente
Para agregar la ubicación de una clase a su ruta de clases a través de la línea de comando, simplemente agregue
-cp
oy-classpath
la ubicación de la clase mientras la ejecuta. ES DECIRO si está ejecutando un IDE como eclipse, puede hacer clic derecho en
project -> build path -> configure build path
y agregar el JAR externo que contiene su clase a la ruta de compilación, entonces debería funcionar bien.fuente
Utilizar ';' como separador. Si sus variables de entorno están configuradas correctamente, debería ver su configuración. Si su PATH y CLASSPATH son correctos, Windows debería reconocer esos comandos. NO necesita reiniciar su computadora al instalar Java.
fuente
Agregue la ruta completa del archivo jar a CLASSPATH. En uso de linux:
export CLASSPATH=".:/full/path/to/file.jar:$CLASSPATH"
. Otra forma de trabajar (sin editar CLASSPATH) fue descomprimir el archivo jar en la carpeta del proyecto actual.Las formas no funcionaron para mí:
1) Usando la
-cp
opción con la ruta completa del archivo jar.2) Usar
-cp
solo con el nombre de jar cuando se encuentra en la carpeta actual3) Copiar el tarro a la carpeta del proyecto actual
4) Copiar el archivo jar en la ubicación estándar de los archivos Java (/ usr / share / java)
Esta solución se informa para la clase com.mysql.jdbc.Driver en mysql-connector-java.5 - *. Jar, trabajando en linux con OpenJDK versión 1.7
fuente
Suba a la parte superior y elimine la declaración de importación si la hay, y vuelva a importar la clase. Pero si ese no es el caso, haz una limpieza y luego construye. ¿Estás usando Netbeans o Eclipse?
fuente
Me encontré con esto también y probé todas las otras soluciones. No tenía el archivo .class en mi carpeta HTML, solo tenía el archivo .java. Una vez que agregué el archivo .class, el programa funcionó bien.
fuente
Podría suceder si su ruta de clases no es correcta
Postulemos una clase serializable y una clase deserializable bajo el mismo nombre de proyecto. Ejecuta la clase serializable, creando un objeto serializable en una carpeta específica. Ahora necesita los datos desearializados. Mientras tanto, si cambia el nombre del proyecto, no funcionará. Primero debe ejecutar la clase serializable y luego deserializar el archivo.
fuente
Si está utilizando maven, intente actualizar todos los proyectos y forzar las instantáneas. También limpiará y reconstruirá todas las rutas de clases. Resolvió mi problema.
fuente
Lo acabo de hacer
1.Invalidar cachés y reiniciar
2. Reconstruí mi proyecto que resolvió el problema
fuente
Estaba tratando de ejecutar .jar desde el código C # usando
Process
class. El código java se ejecutó con éxito desde eclipse pero no desde C # visual studio e incluso haciendo clic directamente en el archivo jar, siempre se detuvo conClassNotFoundException:
excepción. La solución para mi fue exportar el programa Java como "Archivo JAR ejecutable" en lugar de "Archivo JAR". Espero que pueda ayudar a alguien.fuente
Esto puede suceder en Windows después de una actualización de Java en la que falta la versión anterior del SDK de Java y hay una nueva. Verificaría si su IDE está usando la versión del SDK de java instalada (IntelliJ: CTRL + SHIFT + ALT + S)
fuente
Si ha agregado varias bibliotecas (de terceros) ** y amplía ** la clase de aplicación
Entonces podría ocurrir.
Para eso, debe configurar
multiDexEnabled true
y reemplazar suApplication
clase extendida conMultiDexApplication
.Se solucionará.
fuente
Pregunta genérica básica - Respuesta genérica más simple;)
Dada la información, asumiré que puede estar probando un enfoque básico para codificar, construir / compilar y ejecutar una aplicación de consola simple como "Hello World", usando un editor de texto simple y algo de Command Shell.
Este error ocurre en el escenario de barbecho:
En otras palabras, use:
PD: La adición de la extensión de archivo .class produce el mismo error. También asegúrese de tener la carpeta bin de Java (JDK / JRE) en la RUTA de Variables de entorno del sistema operativo. (Busque más detalles en otras publicaciones sobre esto) PPS ¿Estaba en lo correcto en mis suposiciones?
fuente
Si usa maven, verifique que tenga este complemento en su
pom.xml
:Pondrá su dependencia (la razón de la excepción) a su jar.
FYI : esto incluirá todas las dependencias infladas en el frasco final
fuente
En mi caso, la clase lanzada como excepción de clase no encontrada tiene propiedades relacionadas con los certificados ssl. Cierre el eclipse y ábralo con "Ejecutar como administrador", luego el problema se resolvió. Como el eclipse tiene permisos relacionados con el problema, generará este tipo de excepción.
fuente
Coloque todo el código en el bloque try y luego capture la excepción en un bloque catch
fuente