Вопрос-ответ

java.lang.ClassNotFoundException when running in IntelliJ IDEA

java .lang.Исключение ClassNotFoundException при запуске в IntelliJ IDEA

Я создаю программу для работы с базами данных и получаю следующую ошибку при компиляции в IntelliJ IDEA. Кто-нибудь знает, почему это происходит и как я мог бы это решить?

введите описание изображения здесь

Переведено автоматически
Ответ 1

Ошибка, которую вы получаете, возникает не при завершении, а при попытке запустить ваше приложение. Это происходит потому, что Java не смогла найти Table.class файл внутри db подкаталога выходного каталога проекта (classpath).

Это может произойти по нескольким причинам:


  • неправильно выбранный основной класс в конфигурации запуска / отладки

  • Table.java исключен из компиляции (случайно или намеренно, потому что он содержал ошибки, и вы хотели пропустить его при работе над другим кодом)

  • класс не скомпилирован, потому что шаг сборки исключен из шагов перед запуском в конфигурации Запуска / отладки

  • проект неправильно настроен, и для каталога, содержащего исходный кореньdb

  • Table.java содержит неверный package оператор или находится / перемещен в другой пакет

  • путь к проекту содержит двоеточие : на Mac / Linux или точку с запятой ; в Windows, он используется для разделения пути к классу и делает путь к классу недействительным. Подробности смотрите в этой теме. Обратите внимание, что Finder на Mac может отображать двоеточия в пути в виде косых черт.

  • jar может не выполняться, если один из зависимых jar имеет цифровую подпись, поскольку новый артефакт будет включать частичную подпись зависимости. Смотрите Этот ответ для получения более подробной информации.

  • В структуре проекта убедитесь, что у вас выбрана правильная версия Java для компиляции.

  • существует известная ошибка, заключающаяся в том, что иногда проект Java, созданный из шаблона командной строки, не работает, потому что .idea/modules.xml файл ссылается на недопустимый файл модуля с именем untitled104.iml. Исправьте имя модуля вручную или создайте проект с нуля и не используйте шаблон.

  • в Windows включена настройка региона "Beta: используйте Unicode UTF-8 для поддержки языков по всему миру". Смотрите IDEA-247837 для получения более подробной информации и обходных путей.

  • Когда IntelliJ IDEA настроен на хранение зависимостей модулей в формате Eclipse, корневая конфигурация исходного кода теряется из-за известной ошибки. Настройте модуль на использование зависимостей формата IntelliJ IDEA в качестве обходного пути.

В правильно настроенном проекте и при правильной конфигурации запуска / отладки все работает просто отлично:

Выполнить

Ответ 2


  • jar может не выполняться, если один из зависимых jar имеет цифровую подпись, поскольку новый артефакт будет включать частичную подпись зависимости. Смотрите Этот ответ для получения более подробной информации.


Я должен еще раз подчеркнуть точку зрения CrazyCoder здесь.

JVM (Oracle) раньше выдавала исключение SecurityException при попытке запустить Jar-файл, содержащий неработающие подписи. Это имело смысл с точки зрения "Что не так".

Это больше не так. Они действительно выдают ClassNotFoundException сейчас - даже если класс находится прямо в файле (независимо от того, находится ли он в пакете по умолчанию / верхнего уровня или намного ниже во вложенной структуре пакета).

Ответ 3

Вот что сработало у меня:

Я удалил .ide папку, .iml файл. И все другие автоматически сгенерированные IntelliJ файлы, затем перезапустил мою ide, и меня спросили, хочу ли я запустить свой проект с maven, вот и все.

Очевидно, я сказал "да" :)

Ответ 4

Это известная ошибка в IntelliJ idea. Чтобы исправить это, я просто удалил .iml и .idea и перезапустил IDE. Это работает в большинстве случаев

Редактировать: файлы будут находиться в каталогах проекта.

java intellij-idea