Corrección del Error "El Paquete No Existe"
Ahora que entendemos qué causa el error "el paquete no existe" (package does not exist), exploremos formas de solucionarlo. Existen varios enfoques para resolver este problema:
Solución 1: Crear el Paquete y la Clase Faltantes
La solución más directa es crear el paquete y la clase que faltan. Implementemos esto:
mkdir -p ~/project/src/com/example/math
Ahora, crea un nuevo archivo llamado Calculator.java en el directorio ~/project/src/com/example/math con el siguiente contenido:
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;
}
}
Ahora intenta compilar los archivos de nuevo. Primero, compila el archivo Calculator.java, luego compila ErrorDemo.java con el classpath correcto:
cd ~/project
javac src/com/example/math/Calculator.java
javac -cp src src/com/example/app/ErrorDemo.java
Importante: Al igual que antes, necesitamos usar -cp src al compilar ErrorDemo.java para que el compilador pueda encontrar el archivo compilado Calculator.class.
Esta vez, la compilación debería completarse sin errores. Ahora puedes ejecutar el programa:
java -cp src com.example.app.ErrorDemo
Deberías ver la salida:
Result: 8
Solución 2: Corregir la Declaración de Importación
Si tu intención era usar un paquete o clase diferente, otra solución es corregir la declaración de importación. Supongamos que en realidad queríamos usar la clase StringUtils que creamos anteriormente.
Crea un nuevo archivo llamado CorrectedDemo.java en el directorio ~/project/src/com/example/app con el siguiente contenido:
package com.example.app;
// Declaración de importación corregida
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);
}
}
Compila y ejecuta este archivo:
cd ~/project
javac -cp src src/com/example/app/CorrectedDemo.java
java -cp src com.example.app.CorrectedDemo
Deberías ver la salida:
Original: Hello, Java!
Reversed: !avaJ ,olleH
Solución 3: Usar Nombres de Clase Completamente Calificados
Si deseas evitar por completo las declaraciones de importación, puedes usar nombres de clase completamente calificados (fully qualified class names):
Crea un nuevo archivo llamado FullyQualifiedDemo.java en el directorio ~/project/src/com/example/app con el siguiente contenido:
package com.example.app;
// No se necesita declaración de importación
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);
}
}
Compila y ejecuta este archivo:
cd ~/project
javac -cp src src/com/example/app/FullyQualifiedDemo.java
java -cp src com.example.app.FullyQualifiedDemo
Deberías ver la misma salida que antes.