"Package Does Not Exist" 오류 수정하기
"package does not exist" 오류의 원인을 이해했으니, 이를 수정하는 방법을 살펴보겠습니다. 이 문제를 해결하는 데는 몇 가지 접근 방식이 있습니다.
해결 방법 1: 누락된 패키지 및 클래스 생성
가장 간단한 해결책은 누락된 패키지와 클래스를 만드는 것입니다. 이를 구현해 보겠습니다.
mkdir -p ~/project/src/com/example/math
이제 ~/project/src/com/example/math 디렉토리에 Calculator.java라는 새 파일을 만들고 다음 내용을 포함시킵니다.
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;
}
}
이제 파일을 다시 컴파일해 보세요. 먼저 Calculator.java 파일을 컴파일하고, 그런 다음 올바른 클래스 경로 (classpath) 로 ErrorDemo.java를 컴파일합니다.
cd ~/project
javac src/com/example/math/Calculator.java
javac -cp src src/com/example/app/ErrorDemo.java
중요: 이전과 마찬가지로 ErrorDemo.java를 컴파일할 때 -cp src를 사용하여 컴파일된 Calculator.class 파일을 찾을 수 있도록 해야 합니다.
이번에는 컴파일이 오류 없이 성공해야 합니다. 이제 프로그램을 실행할 수 있습니다.
java -cp src com.example.app.ErrorDemo
다음과 같은 출력이 표시됩니다.
Result: 8
해결 방법 2: import 문 수정
다른 패키지나 클래스를 사용하려고 했다면, import 문을 수정하는 것이 또 다른 해결책입니다. 예를 들어, 이전에 생성한 StringUtils 클래스를 사용하려고 했다고 가정해 보겠습니다.
~/project/src/com/example/app 디렉토리에 CorrectedDemo.java라는 새 파일을 만들고 다음 내용을 포함시킵니다.
package com.example.app;
// 수정된 import 문
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);
}
}
이 파일을 컴파일하고 실행합니다.
cd ~/project
javac -cp src src/com/example/app/CorrectedDemo.java
java -cp src com.example.app.CorrectedDemo
다음과 같은 출력이 표시됩니다.
Original: Hello, Java!
Reversed: !avaJ ,olleH
해결 방법 3: 전체 정규화된 클래스 이름 사용
import 문을 완전히 생략하고 싶다면, 전체 정규화된 클래스 이름 (fully qualified class names) 을 사용할 수 있습니다.
~/project/src/com/example/app 디렉토리에 FullyQualifiedDemo.java라는 새 파일을 만들고 다음 내용을 포함시킵니다.
package com.example.app;
// import 문이 필요하지 않습니다.
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);
}
}
이 파일을 컴파일하고 실행합니다.
cd ~/project
javac -cp src src/com/example/app/FullyQualifiedDemo.java
java -cp src com.example.app.FullyQualifiedDemo
이전과 동일한 출력이 표시됩니다.