maven “找不到符号”消息无益

2022-08-31 11:33:34

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

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

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

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

有什么帮助吗?

这是 mvn 的输出 --版本

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。


答案 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>

推荐