行家“找不到符号”消息无益(maven “cannot find symbol” message u

2019-07-17 21:06发布

这是一个非常简单的问题,它可能是一个设置的地方我不知道做什么,但谷歌正在对这个问题特别无助,让结果约编译错误,而不是如何改变编译错误信息。

当我建立我的项目使用Maven,它将如下给我大致格式错误信息:

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

当我用ant或javac的,它实际上告诉我,它不能在错误信息中查找符号。 行家给了我一个行号和字符的位置,但显示实际符号会更有帮助。 上面的线是每一个“无法找到符号”错误给出的唯一线路。 有高于或低于给符号没有线。 我想必须有办法让行家告诉我的信息,但我不知道它是什么。 我尝试了-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。

Answer 1:

这是一个错误在Maven编译器插件,涉及到JDK7我想。 正常工作与JDK6。



Answer 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>


Answer 3:

在我的情况下,问题是,因为我加入了一类新的未被重建一个孩子罐子,那个孩子罐子的pom.xml没有(用与我失败的pom.xml作为儿童对父母的关系<parent>标签)。 所以我重建了孩子罐子之后,错误已经走了。



Answer 4:

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

符号不能被发现,类...“。

要解决这个问题:

  1. 卸下构建路径的JAR文件
  2. 添加到构建路径
  3. 运行mvn compile


Answer 5:

即使我使用的Java 7,行家2.2.1,并得到同样的错误,我删除<scope>tests</scope>从我的POM和使用

mvn clean -DskipTests=true install成功地建立我的项目,但不升级我的Maven版本。



Answer 6:

这是因为这个问题也即重新包装你在POM文件中定义。

从POM文件在Maven插件删除此。 它将工作

<executions>
    <execution>
        <goals>
             <goal>repackage</goal>
        </goals>
    </execution>
</executions>


Answer 7:

在我的情况下,我使用的是依赖作用域确定为<scope>test</scope> 。 这使得在编译时可在开发时的阶级,但是通过,我得到这个消息。

转类范围<scope>provided</scope>解决了这个问题。



Answer 8:

这不是的Maven的功能; 它的编译器的功能。 仔细一看, 你正在寻找的信息是最有可能在下一行。



Answer 9:

我的猜测编译器抱怨无效的注释。 我注意到,Eclipse的犯规显示所有的错误,就像在一个注解的数组的结尾逗号。 但是标准javac一样。



Answer 10:

尝试运行Maven的安装在一个项目上,当我在Eclipse STS得到了类似的问题。 我在为我的项目pom.xml文件的依赖性,并且这些依赖指出,项目改变了一些版本。 我通过运行Maven的安装上,我改变了所有项目,然后再次运行安装在原来的解决了这个问题。



Answer 11:

我曾与Maven的同样的问题。 它发生,我的问题是,行家是产生与differenc情况下名字的文件夹。 我期待一个.service.MyFile但在目标文件夹是服务/ Myfile和Java是敏感的情况下。 我花了几个小时找出来,建议你检查出来。



Answer 12:

解决方案:@Before建立你的组件(使用MVN干净安装)。 构建整个项目一次并再次建立自己的组件

为什么这样 :
我得到这个错误很多次。 大多数时候我会尽量单独建立自己的组件(由于我没有在其他地方所做的更改)的。

对的,但最近已经下载了额外的罐子可能是由第三方完成的(其成分内)变化的影响。 制作一个完整的MVN对整个项目的全新安装救了我很多次



Answer 13:

如果你有在工作空间中的一些其他项目的依赖,这些项目都无法正常建立,这种错误可能出现。 首先尝试建立这种依赖的项目,它可以帮助



Answer 14:

一般来说,当你的编译代码的版本是从你写的代码的不同会出现此错误。 例如,写依赖XXX-1.0.0.jar一个类有方法A码,但该方法中XXX-1.1.0.jar改为B。 如果您编译XXX-1.1.0.jar代码,你会看到错误。



Answer 15:

也许你应该检查你的IDE大小写敏感的特性。 我有同样的问题,并解决它通过使思想区分大小写(对于我的文件系统是区分大小写): https://confluence.jetbrains.com/display/IDEADEV/Filesystem+Case-Sensitivity+Mismatch



文章来源: maven “cannot find symbol” message unhelpful