Veuillez expliquer ce qui suit concernant les erreurs « symbole introuvable », « impossible de résoudre le symbole » ou « symbole introuvable » (en Java) :
Cette question vise à fournir une série de questions-réponses complètes sur ces erreurs de compilation courantes en Java.
Si vous oubliez
new
, vous obtiendrez également cette erreur :Comparaison
Parce qu'un appel sans le mot-clé
new
关键字的调用将尝试查找不带参数的名为String
tentera de trouver une méthode (native) nomméeString
qui ne prend aucun paramètre - et cette signature de méthode peut être indéfinie. p>0. Y a-t-il une différence entre ces erreurs ?
Ce n'est pas vrai. « Symbole introuvable », « Impossible de résoudre le symbole » et « Symbole introuvable » signifient tous la même chose. (Différents compilateurs Java sont écrits par différentes personnes, et différentes personnes utilisent des termes différents pour dire la même chose.)
1. Que signifie l'erreur « symbole introuvable » ?
Tout d'abord, il s'agit d'une erreur de compilation1. Cela signifie il y a un problème dans votre code source Java, ou il y a un problème avec la façon dont vous l'avez compilé.
Votre code source Java contient les éléments suivants :
class
、while
etc.true
、false
、42
、'X'
和“嗨妈妈!”
.+
、=
、{
etc.Reader
、i
、toString
、processEquibalancedElephants
etc.Les erreurs « Symbole introuvable » sont liées aux identifiants. Lors de la compilation du code, le compilateur doit comprendre la signification de chaque identifiant dans le code.
L'erreur "Symbole introuvable" signifie que le compilateur ne peut pas effectuer cette opération. Votre code semble faire référence à quelque chose que le compilateur ne comprend pas.
2. Qu'est-ce qui cause l'erreur « symbole introuvable » ?
Pour la première commande, il n'y a qu'une seule raison. Le compilateur a cherché partout où l'identifiant devait être défini, mais n'a pas trouvé de définition. Cela peut être dû à diverses raisons. Les plus courants sont les suivants :
Pour les identifiants généraux :
StringBiulder
而不是StringBuilder
. Java ne peut pas et ne tente pas de compenser les fautes d'orthographe ou les erreurs typographiques.stringBuilder
而不是StringBuilder
. Tous les identifiants Java sont sensibles à la casse.mystring
和my_string
est différent. (Si vous vous en tenez aux règles de style Java, vous éviterez largement cette erreur...)Pour les identifiants devant référencer des variables :
Pour les identifiants qui doivent être des noms de méthode ou de champ :
Peut-être essayez-vous de référencer une méthode ou un champ hérité qui n'est pas déclaré dans la classe ou l'interface parent/ancêtre.
Peut-être essayez-vous de référencer une méthode ou un champ qui n'existe pas (c'est-à-dire qui n'a pas été déclaré) dans le type que vous utilisez, par exemple
"rope".push()
2 ;Peut-être essayez-vous d'utiliser une méthode comme champ ou vice versa par exemple
"rope".length
或someArray.length()
;Peut-être avez-vous manipulé par erreur le tableau au lieu des éléments du tableau par exemple
;Pour les identifiants qui doivent être des noms de classe :
Peut-être avez-vous oublié d'importer la classe.
Peut-être avez-vous utilisé l'importation "astérisque" mais la classe n'est définie dans aucun package que vous avez importé.
Peut-être en avez-vous oublié un
new
comme ceci :Peut-être essayez-vous d'importer ou d'utiliser une classe qui est déjà déclarée dans le package par défaut ; c'est-à-dire là où se trouve la classe sans l'instruction
package
;Conseil : Déballez. Vous ne devez utiliser le package par défaut que pour les applications simples composées d'une classe... ou d'au moins un fichier source Java.
Pour les cas où un type ou une instance ne semble pas avoir un membre (comme une méthode ou un champ) que vous attendez :
java.awt.List
而不是java.util.List
.Les questions sont généralement une combinaison de ce qui précède. Par exemple, peut-être que vous importez une classe dans
java.io.*
,然后尝试使用Files
类...它位于java.nio代码>而不是
java.io
。或者,也许您打算编写File
...,它是java.io
.L'exemple suivant illustre comment une portée de variable incorrecte peut conduire à une erreur « symbole introuvable » :