Файл класса не найден в IntelliJ

В IntelliJ я получаю эту странную ошибку, когда пытаюсь скомпилировать.

Cannot find annotation method 'cascade()' in type 'javax.persistence.ManyToOne': class file for javax.persistence.ManyToOne not found

Я знаю, кажется довольно очевидным, в чем проблема, но, потратив слишком много времени на эту проблему, теперь я доверяю вам!

Я использую ideaCommunity-9, где я создал глобальную библиотеку для JBoss, которая содержит все банки JBoss, включая ejb3-persistence.jar. Мой модуль включает эту библиотеку, и я переместил ее в начало зависимостей. Нигде в classpath у меня есть класс javax.persistence.ManyToOne, и он также открывается в IntelliJ без проблем.
Если я открою файл, где я получаю ошибку компиляции, IntelliJ не показывает проблем, а также переходит к файлу класса при нажатии Ctrl + B.
Код также создается с помощью ant, и здесь он отлично работает.

Помимо вышеупомянутой ошибки, я получаю шесть других по одному и тому же пути (имя в таблице и т.д.) - все это связано с JPA. Я также получаю сообщение о том, что "Пожалуйста, напишите ошибку JDC yada yada yada".

Ответы

Ответ 1

Попробуйте установить флажок "экспорт" в ваши зависимости.

Я имею в виду: Структура проекта → Модули → Зависимости, и там вы можете увидеть библиотеки, включенные в модуль. Вы также должны увидеть флажок рядом с каждой библиотекой в ​​столбце "Экспорт".

Ответ 2

Просто получил это сам, но не из тех вещей, которые были моей проблемой. Я загрузил проект из github, а затем открыл его в intelli J с проблемой после попытки выполнить тест junit.

Структура проекта → Модули → 'Project_Name' → Источники (вкладка) → щелкните папку src → Отметьте как: Источники

Это должно означать, что src будет синим, а все файлы классов должны быть кругами с C, а не похожими на обычные файлы. Попробуйте снова запустить тест и посмотрите, не делает ли это.

Ответ 3

Я уверен, что уже слишком поздно отвечать, но я должен был придерживаться другого подхода к этой ошибке, чтобы решить эту проблему.

Мне пришлось создать это как глобальную библиотеку и добавить эту библиотеку в модуль, а затем разрешить только ошибку.

Add this as a global library

Then add that library as dependency to the project

Ответ 4

Разве это не похоже на этот вопрос SO?

Было решено добавить все JBoss jar (что вы сделали), но также и все связанные с ней библиотеки (например, Hibernate)

Смотрите конфигурацию JBoss, например:

alt text http://jdick.co.uk/blog/wp-content/uploads/2008/12/projectstructure1.jpg

Короче говоря, ejb3-persistence.jar может не быть проблемой здесь, просто признаком отсутствия других элементов.
Или, если это проблема, это может быть связано с тем, что она не развернута правильно (для Конфигурация WebApp).

Ответ 5

Вот идея: Возможно, у вас есть несколько версий вашего файла jar. Найдите иерархию папок для файла ejb3-persistence.jar, используя инструмент управления файлами, такой как Total Commander. Несколько представлений файла в вашем пути к классу могут смутить IntelliJ Idea чтобы не распознать правильный класс в надлежащей банке.

Ответ 6

имела аналогичную проблему ("не удается найти класс spring... DefaultResourceLoader, даже если это было в моих зависимостях от maven), и никакая корректировка перепрошиваемых кешей, похоже, не помогла. Удалите мои пути $HOME/.Idea * и (в основном), начиная с нуля, исправил это для меня. По крайней мере на данный момент...

Ответ 7

Я получал сообщение об ошибке class not found при попытке выполнить тестовый класс .groovy, который ссылался на файл .groovy (расположенный в корне исходной директории подмодуля, то есть без пакетов).

Перемещение исходного файла .groovy в пакет, исправил проблему для меня.

Move:

src/main/groovy/RunMe.groovy

к

src/main/groovy/somePackage/RunMe.groovy

Ответ 8

В intelliJ у меня возникла эта проблема, когда я построил (ctrl + shift + F9) на уровне файла.

Причина в том, что у меня были изменения в других файлах в том же проекте maven, которые не были выбраны.

Я решил это, построив на уровне проекта (выберите проект Maven в intellij и нажмите ctrl + shift + F9)

Ответ 9

В intelliJ у меня возникла эта проблема, когда я построил (ctrl + shift + F9) на уровне файла класса.

Причина в том, что у меня были изменения в других файлах в одном проекте maven, которые не были выбраны.

Я решил это, построив на уровне проекта (выберите проект Maven в intellij и нажмите ctrl + shift + F9)