这是一个非常简单的问题,它可能是一个设置的地方我不知道做什么,但谷歌正在对这个问题特别无助,让结果约编译错误,而不是如何改变编译错误信息。
当我建立我的项目使用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。
这是一个错误在Maven编译器插件,涉及到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>
在我的情况下,问题是,因为我加入了一类新的未被重建一个孩子罐子,那个孩子罐子的pom.xml没有(用与我失败的pom.xml作为儿童对父母的关系<parent>
标签)。 所以我重建了孩子罐子之后,错误已经走了。
我有同样的问题。 原因是我有没有通过Maven的依赖增加了两个JAR文件,所以当我跑mvn compile
,控制台显示错误的错误:
符号不能被发现,类...“。
要解决这个问题:
- 卸下构建路径的JAR文件
- 添加到构建路径
- 运行
mvn compile
即使我使用的Java 7,行家2.2.1,并得到同样的错误,我删除<scope>tests</scope>
从我的POM和使用
mvn clean -DskipTests=true install
成功地建立我的项目,但不升级我的Maven版本。
这是因为这个问题也即重新包装你在POM文件中定义。
从POM文件在Maven插件删除此。 它将工作
<executions>
<execution>
<goals>
<goal>repackage</goal>
</goals>
</execution>
</executions>
在我的情况下,我使用的是依赖作用域确定为<scope>test</scope>
。 这使得在编译时可在开发时的阶级,但是通过,我得到这个消息。
转类范围<scope>provided</scope>
解决了这个问题。
这不是的Maven的功能; 它的编译器的功能。 仔细一看, 你正在寻找的信息是最有可能在下一行。
我的猜测编译器抱怨无效的注释。 我注意到,Eclipse的犯规显示所有的错误,就像在一个注解的数组的结尾逗号。 但是标准javac
一样。
尝试运行Maven的安装在一个项目上,当我在Eclipse STS得到了类似的问题。 我在为我的项目pom.xml文件的依赖性,并且这些依赖指出,项目改变了一些版本。 我通过运行Maven的安装上,我改变了所有项目,然后再次运行安装在原来的解决了这个问题。
我曾与Maven的同样的问题。 它发生,我的问题是,行家是产生与differenc情况下名字的文件夹。 我期待一个.service.MyFile但在目标文件夹是服务/ Myfile和Java是敏感的情况下。 我花了几个小时找出来,建议你检查出来。
解决方案:@Before建立你的组件(使用MVN干净安装)。 构建整个项目一次并再次建立自己的组件
为什么这样 :
我得到这个错误很多次。 大多数时候我会尽量单独建立自己的组件(由于我没有在其他地方所做的更改)的。
对的,但最近已经下载了额外的罐子可能是由第三方完成的(其成分内)变化的影响。 制作一个完整的MVN对整个项目的全新安装救了我很多次
如果你有在工作空间中的一些其他项目的依赖,这些项目都无法正常建立,这种错误可能出现。 首先尝试建立这种依赖的项目,它可以帮助
一般来说,当你的编译代码的版本是从你写的代码的不同会出现此错误。 例如,写依赖XXX-1.0.0.jar一个类有方法A码,但该方法中XXX-1.1.0.jar改为B。 如果您编译XXX-1.1.0.jar代码,你会看到错误。
也许你应该检查你的IDE大小写敏感的特性。 我有同样的问题,并解决它通过使思想区分大小写(对于我的文件系统是区分大小写): https://confluence.jetbrains.com/display/IDEADEV/Filesystem+Case-Sensitivity+Mismatch