请解释以下关于“无法找到符号”,“无法解析符号”或“符号未找到”的错误(在Java中):

它们是什么意思? 什么东西会引起它们? 程序员如何着手修复它们?

本问题旨在针对Java中常见的编译错误进行全面的问答。


当前回答

如果eclipse Java构建路径映射到7、8和Project pom.xml中的Maven属性Java。version提到了更高的Java版本(9,10,11等),而不是7,8,你需要在pom.xml文件中更新。

在Eclipse中,如果Java被映射到Java版本11,而在pom.xml中,它被映射到Java版本8。在Eclipse IDE中执行以下步骤将Eclipse支持更新到Java 11 帮助->安装新软件->

在Work With中粘贴以下链接http://download.eclipse.org/eclipse/updates/4.9-P-builds

or

添加(弹出窗口将打开)->

名称:Java 11支持 地点:http://download.eclipse.org/eclipse/updates/4.9-P-builds

然后更新Java版本的Maven属性的pom.xml文件如下

<java.version>11</java.version>
<maven.compiler.source>${java.version}</maven.compiler.source>
<maven.compiler.target>${java.version}</maven.compiler.target>

最后右键单击项目Debug as -> Maven清洁,Maven构建步骤

其他回答

如果eclipse Java构建路径映射到7、8和Project pom.xml中的Maven属性Java。version提到了更高的Java版本(9,10,11等),而不是7,8,你需要在pom.xml文件中更新。

在Eclipse中,如果Java被映射到Java版本11,而在pom.xml中,它被映射到Java版本8。在Eclipse IDE中执行以下步骤将Eclipse支持更新到Java 11 帮助->安装新软件->

在Work With中粘贴以下链接http://download.eclipse.org/eclipse/updates/4.9-P-builds

or

添加(弹出窗口将打开)->

名称:Java 11支持 地点:http://download.eclipse.org/eclipse/updates/4.9-P-builds

然后更新Java版本的Maven属性的pom.xml文件如下

<java.version>11</java.version>
<maven.compiler.source>${java.version}</maven.compiler.source>
<maven.compiler.target>${java.version}</maven.compiler.target>

最后右键单击项目Debug as -> Maven清洁,Maven构建步骤

如果您在其他地方的构建中遇到此错误,而您的IDE表示一切正常,那么请检查您在两个地方使用的Java版本是否相同。

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

我们在一个Java项目中得到了一个错误,该项目被设置为Gradle多项目构建。结果发现其中一个子项目缺少Gradle Java Library插件。 这阻止了子项目的类文件对构建中的其他项目可见。

在将Java库插件添加到子项目的构建之后。用下面的方法Gradle,错误就消失了:

plugins {
    ...
    id 'java-library'
}

“找不到”的意思是,编译器找不到合适的变量,方法,类等…如果你得到了错误提示,首先你要找到得到错误提示的代码行,然后你就可以在使用它之前找到哪个变量、方法或类没有定义。确认初始化该变量后,方法或类可以用于以后的需要…考虑下面的例子。

我将创建一个演示类并打印一个名称…

class demo{ 
      public static void main(String a[]){
             System.out.print(name);
      }
}

现在看看结果。

该错误说,“变量名找不到”..为name变量定义并初始化值可以消除该错误。

class demo{ 
      public static void main(String a[]){

             String name="smith";

             System.out.print(name);
      }
}

现在看看新的输出……

成功解决了这个错误..同时,如果你可以得到“找不到方法”或“找不到类”的东西,首先定义一个类或方法,然后使用它..

要获得提示,请仔细查看抛出错误的类名name和行号,例如: 编译失败 [ERROR] \applications\xxxxx.java:[44,30] ERROR:无法找到符号

另一个原因是java版本不支持的方法,例如jdk7 vs 8。 检查您的%JAVA_HOME%