理解java的“找不到符号”错误消息

编译Java程序时,编译器会创建一个使用中的所有标识符的列表。如果找不到标识符所指的内容(例如,变量没有声明语句),则无法完成编译。...

编译Java程序时,编译器会创建一个使用中的所有标识符的列表。如果找不到标识符所指的内容(例如,变量没有声明语句),则无法完成编译。

Hands using a keyboard

这就是

cannot find symbol

错误消息表示编译器没有足够的信息来拼凑Java代码要执行的内容。

“找不到符号”错误的可能原因

尽管Java源代码包含关键字、注释和运算符等其他内容,“找不到符号”错误引用特定包、接口、类、方法或变量的名称。编译器需要知道每个标识符引用了什么。如果没有,代码基本上是在寻找编译器尚未理解的东西。

“找不到符号”Java错误的一些可能原因包括:

  • 尝试使用变量而不声明它。
  • 拼写错误的类或方法名称。请记住,Java区分大小写,拼写错误不会为您更正。此外,下划线可能是必需的,也可能不是必需的,所以请注意不应该使用下划线的代码,反之亦然。
  • 使用的参数与方法的签名不匹配。
  • 未使用导入声明正确引用打包类。
  • 标识符看起来相同,但实际上不同。这个问题可能很难发现,但在这种情况下,如果源文件使用UTF-8编码,您可能会使用一些标识符,好像它们是相同的,但实际上并非如此,因为它们看起来拼写相同。
  • 您正在查看错误的源代码。似乎很难相信您正在阅读的源代码与产生错误的源代码不同,但这绝对是可能的,尤其是对于新的Java程序员。仔细检查文件名和版本历史记录。
  • 您忘记了一个新的,如下所示:String s=String();,哪一个应该在s=new String()上;

有时,错误是由各种问题组合而成的。因此,如果您修复了一件事,并且错误仍然存在,请检查是否存在仍然影响代码的不同问题。

例如,您可能正在尝试使用未声明的变量,当您修复它时,代码仍然包含拼写错误。

“找不到符号”java错误示例

让我们以这段代码为例:

此代码将导致

cannot find symbol

错误,因为

System.out

类没有名为“prontln”的方法:

消息下面的两行将准确地解释代码的哪一部分使编译器感到困惑。

在专用的集成开发环境中,经常会标记诸如资本错配之类的错误。尽管您可以在任何文本编辑器中编写Java代码,但使用IDE及其相关联的linting工具可以减少打字错误和不匹配。常见的JavaIDE包括Eclipse和NetBeans。

  • 发表于 2021-10-11 11:54
  • 阅读 ( 131 )
  • 分类:编程

你可能感兴趣的文章

扔(throw)和抛出java(throws in java)的区别

...别——java中的throw与throws 编程时可能会出错。程序中的错误会产生意外的结果,也可能会终止程序的执行。因此,正确地检测和管理错误,才能正确地执行程序。错误可以有两种类型。它们是编译时错误和运行时错误。当有语...

  • 发布于 2020-09-21 19:02
  • 阅读 ( 353 )

选中的(checked)和java中的未检查异常(unchecked exception in java)的区别

...键区别——java中的检查异常与未检查异常 异常是运行时错误。有两种类型的异常称为检查异常和未检查异常。当发生选中的异常时,Java应用程序连接到外部资源,如文件、设备或数据库。这些异常由编译器检查。检查的异常的...

  • 发布于 2020-10-19 08:38
  • 阅读 ( 279 )

最终决赛(final finally)和用java完成(finalize in java)的区别

...用现有的类。为此,可以使用final。在编程中,可能会有错误,为了正确地执行程序,处理这些错误是很重要的。finalize是由垃圾回收器调用的方法。因此,所有这些术语都有不同的含义。final是一个关键字,用于防止更改变量、...

  • 发布于 2020-10-19 15:24
  • 阅读 ( 237 )

如何用java连接mysql数据库

...序是一个软件组件,它将核心JDBC调用转换为该数据库所理解的格式。 ...

  • 发布于 2021-03-11 17:39
  • 阅读 ( 334 )

初学者必备的8个eclipse键盘快捷键

... 作为一个Java程序员,您应该完全理解Java虚拟机是如何工作的,以及为什么它允许跨平台开发。您还应该熟悉核心Java概念,例如如何在Java中使用异常。你也可以用Java玩得很开心---用Java和处理技术创造出...

  • 发布于 2021-03-11 23:36
  • 阅读 ( 334 )

java异常:您处理的对吗?

...置。 访问数组边界之外的数组项表示程序错误。调试愉快! XML解析错误应该引起用户的注意,以便可以更正XML文件。 内存不足的程序(可能在处理大文件时)可以通过增加java进程可...

  • 发布于 2021-03-13 09:11
  • 阅读 ( 256 )

如何正确处理java异常

作为一个编程新手,异常处理的概念可能很难让你理解。并不是说概念本身很难理解,而是术语可以让它看起来比实际更先进。而且它的功能非常强大,很容易被滥用。 ...

  • 发布于 2021-03-14 17:31
  • 阅读 ( 237 )

是什么jusched.exe文件为什么它在运行?

...”按钮后,如果您使用的是Windows Vista,则可能会收到此错误消息,说明它也没有经过正确的认证,无法使用Vista。只需点击它的工作正常。 这确实让我想知道…我想我们会错过更新修复问题的控制面板…还是我们会?您可以改...

  • 发布于 2021-04-09 07:09
  • 阅读 ( 152 )

虚拟机(jvm)和jre公司(jre)的区别

...JVM。 JVM代表Java虚拟机,它创建了一个虚拟计算机,可以理解编写Java程序的代码。Java程序不是以特定于操作系统的方式编写的。这使它能够在任何平台上运行,但需要使用JVM将命令从Java字节码转换为特定的机器代码。 并非所有...

  • 发布于 2021-06-23 18:18
  • 阅读 ( 207 )

休息(rest)和肥皂(soap)的区别

...产生指定的结果(即结果)。 下面的基本示例展示了在理解如何使用SOAP或REST在web服务之间传输数据之前web服务的基本用法。 如果开发人员正在编写一个需要在一个地方进行一些数据计算的应用程序,则将在该地方的代码中编...

  • 发布于 2021-06-24 23:54
  • 阅读 ( 231 )
cdzf7479
cdzf7479

0 篇文章

相关推荐