[exceptions]如何排查can not find symbol的编译错误

CannotFindSymbol是一个编译错误,表示编译器无法找到代码中引用的标识符的定义。常见原因包括拼写或大小写错误、未声明或作用域超出的变量、方法或类名引用错误、导入问题以及忘记使用new关键字。解决此类错误需要检查标识符的声明、范围和导入语句。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

如何排查can not find symbol的编译错误

Can not find symbol意味着什么

首先,它是一个编译错误,意味着你的源代码有问题或者编译的方式有问题。

你的源代码有以下部分组成:

  • 关键词:比如 true false class while等等
  • 字面值:比如42 ’x’ 和 “Hi mum!” 等等
  • 操作符和其他非字母数字符号:比如 + = { 等等
  • 注释和空白格

一个cannot find symbol 报错就是关于标识符的。当你的代码编译时,编译器需要弄明白你你代码中每一个标识符的含义。而这类报错就意味着编译器不明白你代码指代的东西。

引起cannot findsymbol错误的原因

归根到底无非是因为编译器查找了所有标识符应该被定义的地方都找不到定义。有很多原因可以导致,常见的如下:

通用标识符

  • 名字拼写错误:比如StringBiudler而不是StringBuilder。Java不会试图弥补糟糕的拼写或输入错误
  • 大小写错误:比如stringBuilder而不是StringBuilder。所有的Java标识符是大小写敏感
  • 下划线使用不正确:比如mystring和my_string是不同的(如果你严格按照Java的风格规则,你就能很大程度避免这类错误)

变量标识符

  • 忘记声明变量
  • 变量声明范围无法覆盖你尝试使用的点

方法名标识符

也许你试图引用一个继承的方法,而它却没在父/祖先类/接口中定义

类名标识符

  • 忘记导入类
  • 用了star 导入,但是该类却不在你导入的任何包中定义
  • 忘记new关键字使用:比如Strings=String();

问题解决

通常问题可能是以上的几个原因导致。比如,也许你星号导入java.io.*并且尝试使用Files类(存在java.nio而不是java.io),其实你是想写File(存在java.io的类),根据以上几个原因综合分析。


这个应该是从别人的文章里看的。但笔记太久了,忘了从哪看的了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值