为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

回首忆惘然 2019-05-20 17:12:27
请解释以下关于“无法找到符号”的错误:这个错误是什么意思?什么东西会导致这个错误?程序员如何解决此错误?这个问题旨在成为一个关于Java中“无法找到符号”编译错误的综合问题。
查看完整描述

6 回答

?
不负相思意

TA贡献1777条经验 获得超10个赞

如果您忘记了new以下情况,您也会收到此错误:

String s = String();

String s = new String();


查看完整回答
反对 回复 2019-05-20
?
哈士奇WWW

TA贡献1799条经验 获得超6个赞

“变量超出范围”的另一个例子


正如我已经看过几次这样的问题,也许还有一个例子,即使它可能感觉不错也是非法的。


考虑以下代码:


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);


查看完整回答
反对 回复 2019-05-20
?
慕妹3146593

TA贡献1820条经验 获得超9个赞

在Eclipse中获取此错误的一种方法:

  1. 定义一个类Asrc/test/java

  2. Bsrc/main/java该使用类中定义另一个类A

结果:Eclipse将编译代码,但maven将给出“找不到符号”。

基本原因:Eclipse正在使用主树和测试树的组合构建路径。不幸的是,它不支持为Eclipse项目的不同部分使用不同的构建路径,这是Maven所需要的。

方案:

  1. 不要那样定义依赖关系; 即不要犯这个错误。

  2. 定期使用Maven构建代码库,以便尽早发现这个错误。一种方法是使用CI服务器。


查看完整回答
反对 回复 2019-05-20
?
蝴蝶刀刀

TA贡献1801条经验 获得超8个赞

如果你在其他地方的构建中遇到这个错误,而你的IDE说一切都很好,那么检查你在两个地方都使用相同的Java版本。

例如,Java 7和Java 8具有不同的API,因此在较旧的Java版本中调用不存在的API会导致此错误。


查看完整回答
反对 回复 2019-05-20
?
幕布斯6054654

TA贡献1876条经验 获得超7个赞

可能存在人们上面提到的各种场景。有几件事帮我解决了这个问题。

  1. 如果您使用的是IntelliJ

    File -> 'Invalidate Caches/Restart'

要么

  1. 被引用的类在另一个项目中,并且该依赖项未添加到我的项目的Gradle构建文件中。所以我添加了依赖使用

    compile project(':anotherProject')

它起作用了。HTH!


查看完整回答
反对 回复 2019-05-20
  • 6 回答
  • 0 关注
  • 5079 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信