its_jh_stroy

[Java] 프로젝트 만들자마자 ClassNotFoundException 본문

Java

[Java] 프로젝트 만들자마자 ClassNotFoundException

_J_H_ 2024. 7. 7. 16:23

vsCode로 자바 프로젝트를 만들고, App.java 파일을 실행해 보았더니 아래와 같이 오류가 발생했다.
Error: Could not find or load main class java.test.App
Caused by: java.lang.ClassNotFoundException: java.test.App
  
 
진짜 아무것도 안 했는데 오류가 발생해서 많이 당황했다.
 

패키지 변경하기

알고 보니 이유는 패키지 이름의 문제였다.
"java"로 시작하는 패키지는 JDK에서 사용하는 내장 패키지이므로, 사용자가 직접 "java"로 시작하는 패키지를 생성할 경우 발생하는 오류이다.
따라서 문제가 되는 App.java 위치를 옮겨 패키지를 변경해 주었다.

// 패키지 이름 수정
// package java.test;
package exam;

public class App {
    public String getGreeting() {
        return "Hello World!";
    }

    public static void main(String[] args) {
        System.out.println(new App().getGreeting());
    }
}

 
 

build.gradle 파일 수정하기

이제 App.java 파일을 실행하면 정상적으로 "Hello World!"가 출력된다.
하지만 App.java 패키지를 변경한 경우 여기서 끝내면 빌드할 때 오류가 발생할 것이다.
build.grade 파일에서 mainClass를 수정해야 한다.

application {
    // Define the main class for the application.
    mainClass = '수정한 패키지.App'
}

 
 

AppTest 클래스 수정하기

마지막으로 test 폴더에 있는 AppTest 클래스도 수정해야한다.
App 클래스와 동일한 패키지로 경로를 이동 후 패키지를 수정한다.

// 패키지 이름 수정
// package java.test;
package exam;

import org.junit.jupiter.api.Test;

import static org.junit.jupiter.api.Assertions.*;

class AppTest {
    @Test void appHasAGreeting() {
        App classUnderTest = new App();
        assertNotNull(classUnderTest.getGreeting(), "app should have a greeting");
    }
}