Подтвердить что ты не робот

Сообщение maven "не может найти символ" бесполезно

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

Когда я создаю свой проект с помощью maven, он даст мне сообщения об ошибках, отформатированные примерно следующим образом:

[ERROR]/path/to/source/Main.java:[13,8] ошибка: не удается найти символ

Когда я создаю с помощью ant или javac, он фактически укажет мне символ, который он не может найти в сообщении об ошибке. maven дает мне номер строки и позицию символа, но отображение фактического символа было бы более полезным. Строка выше - это единственная строка, указанная для каждой ошибки "не найти символ". Нет линии выше или ниже, которая дает символ. Я предполагаю, что должен быть какой-то способ заставить maven рассказать мне эту информацию, но я не знаю, что это. Я попробовал параметр -e, так как mvn попросил его попробовать его, но он дал maven traceback для ошибки, а не фактический символ.

Любая помощь?

Здесь вывод mvn -version

Apache Maven 3.0.4 (rNON-CANONICAL_2012-10-24_11-25_mockbuild; 2012-10-24 07:25:04-0400)
Maven home: /usr/share/maven
Java version: 1.7.0_09-icedtea, vendor: Oracle Corporation
Java home: /usr/lib/jvm/java-1.7.0-openjdk-1.7.0.9.x86_64/jre
Default locale: en_US, platform encoding: UTF-8
OS name: "linux", version: "3.6.6-1.fc17.x86_64", arch: "amd64", family: "unix"

И вот пример (бесполезное) сообщение об ошибке, точно так же, как вывод maven (только с сокращенными каталогами):

[INFO] -------------------------------------------------------------
[ERROR] COMPILATION ERROR : 
[INFO] -------------------------------------------------------------
[ERROR] /path/to/source/SoundEngineFilePanel.java:[33,8] error: cannot find symbol
[ERROR]  class SoundEngineFilePanel
/path/to/source/SoundEngineFilePanel.java:[36,8] error: cannot find symbol
[INFO] 2 errors 
[INFO] -------------------------------------------------------------

Символы, которые он не может найти, это "fakeThing" и "fakeThing2", а не SoundEngineFilePanel.

4b9b3361

Ответ 1

Это ошибка в плагине компилятора Maven, связанная с JDK7, я думаю. Работает отлично с JDK6.

Ответ 2

обновить до 3.1:

  <plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-compiler-plugin</artifactId>
    <version>3.1</version>
    <configuration>
        <source>1.7</source>
        <target>1.7</target>
    </configuration>
</plugin>

Ответ 3

У меня была та же проблема. Причина в том, что у меня было два файла JAR, которые не были добавлены через зависимость Maven, поэтому, когда я запускал mvn compile, консоль отображает ошибку ошибки:

Символ не может быть найден, Class... ".

Чтобы исправить это:

  • Удалить файлы JAR из пути сборки
  • Добавить в путь сборки
  • Выполнить mvn compile

Ответ 4

В моем случае проблема была в дочернем банке, который не был перестроен, так как я добавил новый класс, pom.xml этого дочернего банка не был связан с моим неудавшим pom.xml отношением "ребенок-родитель" (используя тег <parent>). Поэтому я перестроил дочернюю банку, после которой ошибка исчезла.

Ответ 5

Даже я использую Java 7, maven 2.2.1 и получаю ту же ошибку, я удалил <scope>tests</scope> из моего pom и использовал

mvn clean -DskipTests=true install, чтобы успешно создавать мои проекты, не обновляя мою версию maven.

Ответ 6

Это не функция Maven; это функция компилятора. Посмотрите внимательно; информация, которую вы ищете, наиболее вероятно в следующей строке.

Ответ 7

Мое предположение, что компилятор жалуется на недопустимую аннотацию. Я заметил, что Eclipse не показывает все ошибки, такие как запятая в конце массива в аннотации. Но стандартный javac делает.

Ответ 8

У меня возникла аналогичная проблема в Eclipse STS при попытке запустить установку Maven в проекте. Я изменил некоторые версии в зависимостях моего файла pom.xml для этого проекта и проектов, на которые указывали эти зависимости. Я решил это, выполнив установку Maven во всех проектах, которые я изменил, а затем снова запустил установку на исходном.

Ответ 9

У меня была такая же проблема с maven. Бывает, что моя проблема заключалась в том, что maven создавал папки с именами разного имени. Я ожидал .service.MyFile, но в целевой папке это был Service/MyFile, а java - с учетом регистра. Мне потребовалось несколько часов, чтобы узнать, рекомендую проверить это.

Ответ 10

РЕШЕНИЕ: @Прежде чем создавать свой компонент (используя mvn clean install). Постройте весь проект один раз и снова создайте свой компонент.

ПОЧЕМУ ТАК:
Я получаю эту ошибку много раз. В большинстве случаев я попытаюсь создать свой компонент самостоятельно (поскольку я не внес изменений в другое место).

Правильно. Но эта дополнительная банка, которая была загружена недавно, может повлиять на изменения, сделанные третьей стороной (внутри их компонента). Создание полной утилиты mvn clean по всему проекту несколько раз меня спасло

Ответ 11

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