maven"找不到符号"的消息无益

mat*_*ttg 70 java settings compiler-errors maven

这是一个非常简单的问题,它可能是我不知道的地方,但谷歌对这个问题特别无益,给出了有关编译错误的结果,而不是如何更改编译错误消息.

当我用maven构建我的项目时,它会给我一些大致如下格式的错误消息:

[ERROR] /path/to/source/Main.java:[13,8]错误:找不到符号

当我使用ant或javac构建时,它实际上会告诉我它在错误消息中找不到的符号.maven给了我一个行号和字符位置,但显示实际符号会更有帮助.上面的行是每个"找不到符号"错误的唯一行.上面或下面没有给出符号的行.我想必须有一些方法让maven告诉我这些信息,但我不知道它是什么.我尝试了-e选项,因为mvn告诉我尝试使用它,但它给出了错误的maven回溯,而不是实际的符号.

有帮助吗?

这是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"
Run Code Online (Sandbox Code Playgroud)

这是一个示例(无用的)错误消息,完全由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] -------------------------------------------------------------
Run Code Online (Sandbox Code Playgroud)

它找不到的符号是"fakeThing"和"fakeThing2",而不是SoundEngineFilePanel.

Pet*_*son 37

这是Maven编译器插件中的一个错误,我认为它与JDK7有关.适用于JDK6.

  • 这不是解决方案..编译错误仍然发生在java 8中. (13认同)
  • 似乎是在maven-compiler-plugin 3.1中修复的.参见[george-papatheodorou](http://stackoverflow.com/users/1570793/george-papatheodorou)的回答. (4认同)
  • 致@Eta(以及大约 27 位对上述评论 +1 的人)——我认为您没有抓住要点。这个问题是关于来自 Maven 的**无用**消息。这个答案讨论了如何使编译错误消息更有帮助。它并没有解决最初导致编译错误的问题。这个问题(通常)出现在您的源代码中!请参阅[“找不到符号”或“无法解析符号”错误是什么意思?](/sf/ask/1799435151/ -符号错误均值)。 (2认同)

Geo*_*rou 34

更新到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>
Run Code Online (Sandbox Code Playgroud)


a.p*_*nov 6

在我的情况下,问题是在一个没有重建的子jar中,因为我添加了一个新类,该子jar的pom.xml与我失败的pom.xml无关,因为它与父对象关系(使用<parent>标记).所以我重建了儿童jar,之后错误就消失了.


Joa*_*ena 6

就我而言,我使用的依赖项范围为<scope>test</scope>. 这使得该类在开发时可用,但是在编译时,我收到了此消息。

转动类范围来<scope>provided</scope>解决问题。


Aja*_*jax 5

我有同样的问题。原因是我没有通过Maven依赖项添加两个JAR文件,所以当我运行时mvn compile,控制台显示错误错误:

找不到符号,类...”。

要解决这个问题:

  1. 从构建路径中删除JAR文件
  2. 添加到构建路径
  3. mvn compile

  • 您能否列出用于从构建路径中删除 JAR 文件的步骤?当我尝试删除目标文件夹并使用 maven 重新编译时遇到相同的错误?谢谢 (4认同)