Corrigindo o Erro "Package Does Not Exist"
Agora que entendemos o que causa o erro "package does not exist" (pacote não existe), vamos explorar maneiras de corrigi-lo. Existem várias abordagens para resolver este problema:
Solução 1: Criar o Pacote e a Classe Ausentes
A solução mais direta é criar o pacote e a classe ausentes. Vamos implementar isso:
mkdir -p ~/project/src/com/example/math
Agora, crie um novo arquivo chamado Calculator.java no diretório ~/project/src/com/example/math com o seguinte conteúdo:
package com.example.math;
public class Calculator {
public static int add(int a, int b) {
return a + b;
}
public static int subtract(int a, int b) {
return a - b;
}
public static int multiply(int a, int b) {
return a * b;
}
public static int divide(int a, int b) {
if (b == 0) {
throw new ArithmeticException("Division by zero");
}
return a / b;
}
}
Agora tente compilar os arquivos novamente. Primeiro, compile o arquivo Calculator.java, depois compile ErrorDemo.java com o classpath correto:
cd ~/project
javac src/com/example/math/Calculator.java
javac -cp src src/com/example/app/ErrorDemo.java
Importante: Assim como antes, precisamos usar -cp src ao compilar ErrorDemo.java para que o compilador possa encontrar o arquivo compilado Calculator.class.
Desta vez, a compilação deverá ser bem-sucedida sem erros. Agora você pode executar o programa:
java -cp src com.example.app.ErrorDemo
Você deverá ver a saída:
Result: 8
Solução 2: Corrigir a Instrução de Importação
Se você pretendia usar um pacote ou classe diferente, outra solução é corrigir a instrução de importação. Digamos que queríamos realmente usar a classe StringUtils que criamos anteriormente.
Crie um novo arquivo chamado CorrectedDemo.java no diretório ~/project/src/com/example/app com o seguinte conteúdo:
package com.example.app;
// Instrução de importação corrigida
import com.example.util.StringUtils;
public class CorrectedDemo {
public static void main(String[] args) {
String original = "Hello, Java!";
String reversed = StringUtils.reverse(original);
System.out.println("Original: " + original);
System.out.println("Reversed: " + reversed);
}
}
Compile e execute este arquivo:
cd ~/project
javac -cp src src/com/example/app/CorrectedDemo.java
java -cp src com.example.app.CorrectedDemo
Você deverá ver a saída:
Original: Hello, Java!
Reversed: !avaJ ,olleH
Solução 3: Usar Nomes de Classe Totalmente Qualificados
Se você quiser evitar instruções de importação completamente, pode usar nomes de classe totalmente qualificados:
Crie um novo arquivo chamado FullyQualifiedDemo.java no diretório ~/project/src/com/example/app com o seguinte conteúdo:
package com.example.app;
// Nenhuma instrução de importação necessária
public class FullyQualifiedDemo {
public static void main(String[] args) {
String original = "Hello, Java!";
String reversed = com.example.util.StringUtils.reverse(original);
System.out.println("Original: " + original);
System.out.println("Reversed: " + reversed);
}
}
Compile e execute este arquivo:
cd ~/project
javac -cp src src/com/example/app/FullyQualifiedDemo.java
java -cp src com.example.app.FullyQualifiedDemo
Você deverá ver a mesma saída de antes.