maven“无法find符号”的消息无益

这是一个非常简单的问题,它可能是一个我不知道的地方,但是Google对这个问题特别没有帮助,给出了关于编译错误的结果,而不是如何改变编译错误信息。

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

[错误] /path/to/source/Main.java:[13,8]错误:无法find符号

当我用ant或javac构build时,它实际上会告诉我它在错误消息中找不到的符号。 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" 

这里有一个示例(无用的)错误信息,正如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。

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

更新到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> 

在我的情况下,问题是在一个子jar没有重build,因为我已经添加了一个新的类,该子jar的pom.xml没有关系到我的失败的pom.xml作为子对父关系(使用<parent>标签)。 所以我重build了错误已经消失的孩子的瓶子。

即使我使用的是Java 7,maven 2.2.1,并得到相同的错误,我从我的pom中删除<scope>tests</scope> ,并使用

mvn clean -DskipTests=true install成功构build我的项目,而不升级我的Maven版本。

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

无法find符号,Class …“。

要解决这个问题:

  1. 从构buildpath中删除JAR文件
  2. 添加到构buildpath
  3. 运行mvn compile

这不是Maven的function; 这是编译器的一个function。 仔细观察 您正在寻找的信息很可能在下面的行中。

我猜测编译器抱怨无效的注释。 我注意到,Eclipse不显示所有的错误,比如注释中数组尾部的逗号。 但标准的javac

当试图在项目上运行Maven安装时,我在Eclipse STS中遇到了类似的问题。 我已经改变了该项目的pom.xml文件的依赖项中的一些版本以及这些依赖项指向的项目。 我解决了这个问题,在我更改的所有项目上运行Maven安装,然后再次运行安装。

我和maven有同样的问题。 碰巧我的问题是,maven正在生成具有不同大小写名称的文件夹。 我期待一个.service.MyFile,但在目标文件夹中它是Service / MyFile和Java是区分大小写的。 我花了几个小时才知道,推荐你去看看。

解决scheme:@在构build组件之前(使用mvn clean install)。 一次构build整个项目并重新构build组件

为什么这样 :
我多次得到这个错误。 大多数时候我会尝试单独构build我的组件(因为我没有在其他地方做过改动)。

对,但最近下载的额外jar可能会受到第三方(在其组件内)所做更改的影响。 在整个项目上进行完整的mvn clean install多次救了我

如果您在工作空间中依赖其他项目,并且这些项目没有正确构build,则可能会出现此类错误。 先尝试build立这样的依赖项目,这可能会有所帮助