请解释以下关于“无法找到符号”,“无法解析符号”或“符号未找到”的错误(在Java中):
它们是什么意思? 什么东西会引起它们? 程序员如何着手修复它们?
本问题旨在针对Java中常见的编译错误进行全面的问答。
请解释以下关于“无法找到符号”,“无法解析符号”或“符号未找到”的错误(在Java中):
它们是什么意思? 什么东西会引起它们? 程序员如何着手修复它们?
本问题旨在针对Java中常见的编译错误进行全面的问答。
当前回答
我是这样解决这个错误的……疯狂的机器人。我有包的名称为适配器和我重构名称适配器与“a”而不是“a”,并解决了这个错误。
其他回答
我们在一个Java项目中得到了一个错误,该项目被设置为Gradle多项目构建。结果发现其中一个子项目缺少Gradle Java Library插件。 这阻止了子项目的类文件对构建中的其他项目可见。
在将Java库插件添加到子项目的构建之后。用下面的方法Gradle,错误就消失了:
plugins {
...
id 'java-library'
}
要获得提示,请仔细查看抛出错误的类名name和行号,例如: 编译失败 [ERROR] \applications\xxxxx.java:[44,30] ERROR:无法找到符号
另一个原因是java版本不支持的方法,例如jdk7 vs 8。 检查您的%JAVA_HOME%
我也得到了这个错误。(我在谷歌上搜索了一下,然后转到了这个页面)
问题:我正在从另一个项目B中定义的类调用项目a的类中定义的静态方法。 我得到以下错误:
error: cannot find symbol
解决方案:我通过首先构建定义方法的项目,然后构建调用方法的项目来解决这个问题。
您使用maven compile编译代码,然后使用maven test运行它,结果很好。现在,如果你在代码中改变了一些东西,然后在没有编译的情况下运行它,你会得到这个错误。
解决方案:再次编译,然后运行测试。对我来说是这样的。
回复:4.4:Stephen C的优秀回答中的一个早期构建问题:
我在开发osgi应用程序时遇到过这种情况。 我有一个java项目a,它依赖于B。 在建造B时,出现了错误:
Compilation failure: org.company.projectA.bar.xyz does not exist
但是在eclipse中,根本不存在编译问题。
调查 当我在A.jar中查看时,有org.company.projectA.foo.abc的类,但没有org.company.projectA.bar.xyz的类。
缺少类的原因是,在A/pom.xml中,有一个导出相关包的条目。
<plugin>
<groupId>org.apache.felix</groupId>
<artifactId>maven-bundle-plugin</artifactId>
...
<configuration>
<instructions>
....
<Export-Package>org.company.projectA.foo.*</Export-Package>
</instructions>
</configuration>
</plugin>
解决方案 像这样添加缺少的包:
<Export-Package>org.company.projectA.foo.*,org.company.projectA.bar.*</Export-Package>
重建一切。
现在,A.jar包含了所有预期的类,所有的东西都编译好了。