java.lang.ClassNotFoundException cuando se ejecuta en IntelliJ IDEA

Resuelto urpi asked hace 7 años • 6 respuestas

Estoy creando un programa para trabajar con bases de datos y aparece el siguiente error al compilar en IntelliJ IDEA. ¿Alguien sabe por qué sucede esto y cómo podría solucionarlo?

ingrese la descripción de la imagen aquí

urpi avatar Mar 08 '17 06:03 urpi
Aceptado

El error que obtiene no ocurre durante la compilación, sino cuando intenta ejecutar su aplicación. Sucede porque Java no pudo encontrar Table.classel archivo dentro dbdel subdirectorio del directorio de salida del proyecto (classpath).

Puede suceder por múltiples razones:

  • clase principal incorrecta seleccionada en la configuración de ejecución/depuración
  • Table.java está excluido de la compilación (por accidente o intencionalmente porque contenía errores y deseaba omitirlo mientras trabajaba en otro código)
  • clase no compilada porque el paso de compilación está excluido de los pasos anteriores al lanzamiento en la configuración de ejecución/depuración
  • El proyecto está mal configurado y no hay una raíz de origen definida para el directorio que contiene dbel subdirectorio.
  • Table.javatiene packageuna declaración incorrecta o está ubicado/movido a un paquete diferente
  • La ruta del proyecto contiene dos puntos :en Mac/Linux o punto y coma ;en Windows, se usa para separar la ruta de clase y la invalidará. Ver este tema para más detalles. Tenga en cuenta que Finder en Mac puede mostrar dos puntos en la ruta como barras.
  • Es posible que el jar no se ejecute si uno de los jar dependientes está firmado digitalmente, ya que el nuevo artefacto incluirá la firma parcial de la dependencia. Consulte esta respuesta para obtener más detalles.
  • En la estructura del proyecto, asegúrese de tener la versión de Java correcta para compilar.
  • Hay un error conocido que indica que a veces un proyecto Java creado a partir de la plantilla de línea de comandos no funciona porque .idea/modules.xmlel archivo hace referencia a un archivo de módulo no válido llamado untitled104.iml. Corrija el nombre del módulo manualmente o cree un proyecto desde cero y no use una plantilla.
  • en Windows "Beta: utilice Unicode UTF-8 para compatibilidad con idiomas en todo el mundo" La configuración regional está habilitada. Consulte IDEA-247837 para obtener más detalles y soluciones.
  • Cuando IntelliJ IDEA se configura para almacenar dependencias de módulos en formato Eclipse, la configuración raíz de origen se pierde debido a un error conocido . Configure el módulo para utilizar las dependencias del formato IntelliJ IDEA como solución alternativa.

En un proyecto configurado correctamente y con la configuración de ejecución/depuración correcta, todo funciona bien:

Correr

CrazyCoder avatar Mar 08 '2017 00:03 CrazyCoder
  • Es posible que el jar no se ejecute si uno de los jar dependientes está firmado digitalmente, ya que el nuevo artefacto incluirá la firma parcial de la dependencia. Consulte esta respuesta para obtener más detalles.

Debo enfatizar nuevamente el punto que CrazyCoder tiene aquí.

La JVM (Oracle) solía generar una excepción de seguridad cuando intentaba ejecutar un archivo Jar que contenía firmas rotas. Esto tenía sentido desde el punto de vista de "¿Qué pasa?".

Ese ya no es el caso. De hecho, ahora están lanzando ClassNotFoundException s, incluso si la clase está allí mismo en el archivo (no importa si está en el paquete predeterminado/nivel superior o en una estructura de paquete anidada).

Holger Müller avatar May 12 '2018 07:05 Holger Müller