Java é uma linguagem de programação fortemente tipada, orientada a objetos e de uso geral para a criação de aplicativos da Web, móveis e corporativos. Java, desenvolvido pela Sun Microsystems e atualmente propriedade da Oracle Corporation, tornou-se uma linguagem de programação muito popular por causa de sua portabilidade, escalabilidade, confiabilidade e estabilidade.
Ao escrever programas usando Java, a linguagem de programação Java é que o código-fonte Java é primeiro compilado em bytecode. O bytecode é então interpretado pela Java Virtual Machine em código de máquina, permitindo assim que o programa Java seja executado. Portanto, Java é uma linguagem compilada e interpretada.
A compilação envolve a varredura de todo o código-fonte e a tradução em código de máquina de uma só vez. Um interpretador, por outro lado, converte o código-fonte em código de máquina uma linha por vez.
Durante a compilação, o compilador cria uma lista de todos os identificadores usados no programa. Em Java, identificadores são nomes dados aos diferentes elementos do programa, como variáveis, classes, métodos, pacotes, interfaces, entre outros.
Quando um programa Java está sendo compilado, podem surgir erros durante o processo de compilação. Esses erros são conhecidos como erros de compilação ou erros de tempo de compilação. Erros de compilação impedem que o compilador Java gere com êxito o bytecode de um programa.
Erros de compilação impedem que seu programa seja compilado. Tais erros podem ser causados por erros de sintaxe, semântica ou estrutural no código-fonte. Um exemplo de erro de compilação é o erro Cannot Find Symbol.
últimas postagens
erro: não é possível encontrar o símbolo
Conforme observado anteriormente, durante a compilação, o compilador Java cria uma lista de todos os identificadores usados no programa e descobre o que cada identificador significa. Se o compilador encontrar um identificador que não reconheça ou não puder dizer a que o identificador se refere, ocorrerá um erro de símbolo impossível de encontrar.
Um erro de símbolo impossível de encontrar é a maneira do compilador informar que você está usando um identificador que ele não consegue entender e, portanto, não consegue descobrir o que o identificador deve fazer.
Isso pode ocorrer porque o identificador que você está tentando usar não foi declarado, não está disponível no escopo em que você o está usando ou não foi importado corretamente. Um erro de símbolo não encontrado pode levar à falha na compilação.
Causas do erro: não é possível encontrar o símbolo
Algumas das possíveis causas do erro: não é possível encontrar o símbolo incluem:
- Erros tipográficos levam a variáveis, métodos, classes ou nomes de pacotes com erros ortográficos. O uso de maiúsculas e minúsculas erradas também leva a esse erro, pois o Java diferencia maiúsculas de minúsculas.
- Usando uma variável, método ou classe que não foi declarada ou usando-a antes de sua declaração real.
- Usando variáveis, métodos ou classes fora do escopo em que foram declarados.
- Criando uma instância de uma classe sem usar a nova palavra-chave
- Instruções de importação ausentes ao tentar usar classes de outros pacotes. Falha ao importar uma classe que está em outro pacote antes de usá-lo também causará esse erro.
- Importação de pacote incorreta.
Quando o compilador detectar qualquer um dos erros acima em seu código, ele interromperá a compilação e lançará o erro de símbolo não encontrado.
Exemplos de erro: não é possível encontrar o símbolo
Vamos dar uma olhada detalhada nos exemplos de código que mostram as diferentes causas do erro de símbolo não encontrado e como resolver o erro.
#1. Erros tipográficos
Variáveis, métodos, classes ou nomes de pacote com erros ortográficos e maiúsculas e minúsculas levam ao erro de símbolo impossível de encontrar. Considere o código abaixo:
class Test { public static void main(String[] args) { int even_number = 4; System.out.println(even_numbe); // misspelled variable name System.out.println(Even_number);// wrong case int sum = addnumber(5, 20); // misspelled method name, wrong case System.out.println(sum); } public static int addNumbers(int a, int b) { int result = a + b; return result; } }
O resultado da compilação do código acima é mostrado abaixo:
Para corrigir os erros, verifique se você está usando o método correto e os nomes das variáveis. No exemplo, a variável even_number e o nome do método addNumbers foram digitados incorretamente e usaram maiúsculas e minúsculas erradas. Para corrigir esses erros, use a variável correta e o nome do método que é par_número e adicioneNumbers conforme mostrado abaixo:
class Test { public static void main(String[] args) { int even_number = 4; System.out.println(even_number); // Correct variable name with the right case System.out.println(even_number); // Correct variable name with the right case int sum = addNumbers(5, 20); // Correct method name System.out.println(sum); } public static int addNumbers(int a, int b) { int result = a + b; return result; } }
Saída:
4 4 25
#2. variável não declarada
Variáveis não declaradas, o uso de variáveis antes da declaração e o uso de variáveis, métodos e classes fora de seu escopo resultam no símbolo não encontrado, conforme mostrado abaixo:
class Test { public static void main(String[] args) { System.out.println(y); // y is undeclared System.out.println(num); // num used before its declaration int num = 4; // num's declaration and initialization if (num > 3) { int x = 2; }; System.out.println(x); // x - used outside its scope } }
O resultado da compilação deste código é mostrado abaixo:
Para corrigir esse erro, certifique-se de declarar todas as variáveis que você usa em seu programa e só usá-las depois de declará-las. No nosso caso, as variáveis y e num foram usadas antes de serem declaradas. Corrija este erro usando-os após sua declaração.
A variável x foi utilizada fora do escopo em que foi declarada. Para corrigir isso, utilize-a dentro do bloco if onde foi declarada conforme a figura abaixo:
class Test { public static void main(String[] args) { String y = "Hello World"; System.out.println(y); // y - used after it has been declared int num = 4; System.out.println(num); // num - used after it has been declared if (num > 3) { int x = 2; System.out.println(x); // x - used within the scope of the if statement }; } }
Saída:
Hello World 4 2
#3. Variáveis, métodos e classes fora do escopo
O uso de variáveis, métodos e classes fora do escopo em que foram declarados resultará em um símbolo impossível de encontrar, conforme mostrado no código abaixo:
class Test { public static void main(String[] args) { if (true) { int number = 10; } System.out.println(number); // 'number' is out of scope } }
A compilação desse código leva ao seguinte erro:
Para corrigir o erro, verifique se você está usando o número da variável dentro do escopo declarado. Isso está dentro do escopo do bloco if, conforme mostrado abaixo:
class Test { public static void main(String[] args) { if (true) { int number = 10; System.out.println(number); // number - used within the scope of the if block } } }
Saída:
10
#4. Criando uma instância de uma classe sem usar a nova palavra-chave
Java é uma linguagem orientada a objetos e, portanto, você pode criar objetos também conhecidos como instâncias de classe em um programa Java. No entanto, se você fizer isso sem usar a nova palavra-chave, encontrará um símbolo de impossibilidade de localização, conforme mostrado abaixo:
public class Car { private String make; private String model; public Car(String make, String model) { this.make = make; this.model = model; } public String getMake() { return make; } public String getModel() { return model; } public static void main(String[] args) { // Creating an instance of the Car class without using new Car myCar = Car("Ford", "Fiesta"); System.out.println("Make: " + myCar.getMake()); System.out.println("Model: " + myCar.getModel()); } }
A compilação do código resulta em um erro conforme mostrado abaixo:
Para corrigir o erro, use a palavra-chave new sempre que estiver criando objetos. Para criar uma instância de uma classe em Java, você precisa usar a palavra-chave new. Para criar uma instância da classe Car, você deve usar new Car() conforme mostrado abaixo:
public class Car { private String make; private String model; public Car(String make, String model) { this.make = make; this.model = model; } public String getMake() { return make; } public String getModel() { return model; } public static void main(String[] args) { // Instance of Car created correctly by using the new keyword Car myCar = new Car("Ford", "Fiesta"); System.out.println("Make: " + myCar.getMake()); System.out.println("Model: " + myCar.getModel()); } }
Saída:
Make: Ford Model: Fiesta
#5. Importação ausente
Tentar usar uma classe encontrada em outro pacote sem importá-la leva ao erro de símbolo não encontrado. Veja o código abaixo:
class Test { public static void main(String[] args) { System.out.println("Hello, enter any number"); // Missing import for the Scanner class Scanner scanner = new Scanner(System.in); int number = scanner.nextInt(); System.out.println("The number you entered is: " + number); scanner.close(); } }
O resultado da compilação do código é mostrado abaixo:
A classe Scanner é usada para obter a entrada do usuário do teclado em um programa Java. Para usá-lo, você precisa primeiro importá-lo para o arquivo que deseja usá-lo. A importação da classe scanner a torna disponível para uso conforme mostrado. A instrução de importação é a primeira linha no código abaixo:
import java.util.Scanner; class Test { public static void main(String[] args) { System.out.println("Hello, enter any number"); // Missing import for the Scanner class Scanner scanner = new Scanner(System.in); int number = scanner.nextInt(); System.out.println("The number you entered is: " + number); scanner.close(); } }
Saída:
Hello, enter any number 45 The number you entered is: 45
#6. Importação incorreta
Além da falha ao importar um pacote que você deseja usar, importar o pacote errado também pode levar a um símbolo de não localização. Considere o código abaixo:
import java.util.Dates; // importing the wrong package - correct package is Date class Test { public static void main(String[] args) { Dates now = new Dates(); System.out.println(now); } }
A compilação do código resulta nos seguintes erros:
Para corrigir os erros gerados pelos erros de símbolos não encontrados, verifique se você está importando o pacote correto. No código que gerou o erro, a classe que foi importada era Dates. No entanto, não há nenhuma classe embutida chamada Dates. O nome correto é Data. Portanto, para remover o erro, importe Data e não Datas conforme mostrado abaixo:
import java.util.Date; // importing the correct package - Date and not Dates class Test { public static void main(String[] args) { Date now = new Date(); System.out.println(now); } }
Saída:
Thu Aug 17 12:02:12 EAT 2023
Impacto do erro: não é possível encontrar o símbolo na compilação
Sendo um erro de compilação, o impacto mais imediato do erro de símbolo não encontrado é uma falha no processo de compilação. Quando o Java está sendo compilado para bytecode, os erros detectados no código-fonte resultam na falha do processo de compilação. Portanto, nenhum bytecode será gerado para ser utilizado na execução do programa.
Quando esses erros surgem, a causa óbvia da ação é começar a depurar seu código-fonte para descobrir o que está causando os erros e corrigi-los. Embora a depuração possa ter o benefício de ajudá-lo a se familiarizar melhor com um idioma, ela pode levar a atrasos no desenvolvimento. Além disso, a qualidade geral do código-fonte é afetada devido a erros no código-fonte.
Conclusão
Eles não conseguem encontrar erros de símbolo, um erro muito comum, e você certamente os encontrará ao escrever o código Java. Felizmente, também é um erro muito fácil de evitar. Não é possível encontrar resultados de erro de símbolo devido ao uso incorreto de identificadores. Portanto, para evitar o erro, certifique-se de declarar todas as suas variáveis, métodos e classes antes de usá-los.
Além disso, certifique-se de não cometer nenhum erro de digitação ao referenciar os identificadores que está usando em seu programa e use todos os seus identificadores dentro do escopo que você os declarou. Finalmente, caso você esteja usando algum pacote ou classes externas em seu programa, certifique-se de importar os pacotes corretos para seu programa antes de começar a usá-los.
Você também pode explorar o melhor software de monitoramento Java para empresas.