什么是“找不到符号”编译错误是什么意思?

请解释以下关于“无法找到符号”的错误:

  • 这个错误是什么意思?

  • 什么东西会导致这个错误?

  • 程序员如何解决此错误?

这个问题旨在成为一个关于Java中“无法找到符号”编译错误的综合问题。


回首忆惘然
浏览 5080回答 6
6回答

不负相思意

如果您忘记了new以下情况,您也会收到此错误:String s = String();与String s = new String();

哈士奇WWW

“变量超出范围”的另一个例子正如我已经看过几次这样的问题,也许还有一个例子,即使它可能感觉不错也是非法的。考虑以下代码:if(somethingIsTrue()) {  String message = "Everything is fine";} else {  String message = "We have an error";}System.out.println(message);这是无效的代码。因为命名的变量都不在message其各自的范围之外可见 - {}在这种情况下,这将是周围的括号。你可能会说:“但是,一个名为消息变量定义两种方式-这样的消息被后定义if”。但你错了。Java没有free()或delete运算符,所以它必须依赖跟踪变量范围来找出何时不再使用变量(以及对这些原因变量的引用)。如果你认为你做了一件好事,那就特别糟糕了。在“优化”代码之后我看到了这种错误:if(somethingIsTrue()) {  String message = "Everything is fine";  System.out.println(message);} else {  String message = "We have an error";  System.out.println(message);}“哦,有重复的代码,让我们拉出那条普通的线路” - >然后就可以了。处理这种范围问题的最常见方法是将else-values预先分配给外部作用域中的变量名称,然后在以下情况下重新分配:String message = "We have an error";if(somethingIsTrue()) {  message = "Everything is fine";} System.out.println(message);

慕妹3146593

在Eclipse中获取此错误的一种方法:定义一个类A在src/test/java。B在src/main/java该使用类中定义另一个类A。结果:Eclipse将编译代码,但maven将给出“找不到符号”。基本原因:Eclipse正在使用主树和测试树的组合构建路径。不幸的是,它不支持为Eclipse项目的不同部分使用不同的构建路径,这是Maven所需要的。方案:不要那样定义依赖关系; 即不要犯这个错误。定期使用Maven构建代码库,以便尽早发现这个错误。一种方法是使用CI服务器。

蝴蝶刀刀

如果你在其他地方的构建中遇到这个错误,而你的IDE说一切都很好,那么检查你在两个地方都使用相同的Java版本。例如,Java 7和Java 8具有不同的API,因此在较旧的Java版本中调用不存在的API会导致此错误。

幕布斯6054654

可能存在人们上面提到的各种场景。有几件事帮我解决了这个问题。如果您使用的是IntelliJFile -> 'Invalidate Caches/Restart'要么被引用的类在另一个项目中,并且该依赖项未添加到我的项目的Gradle构建文件中。所以我添加了依赖使用compile project(':anotherProject')它起作用了。HTH!
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java